15章(文字列処理とソート) 練習問題3
ユーザから与えられた文字列の中から、与えられた部分文字列が現れる場所を全て探して、その位置を表示するプログラムを書いてください。
む…難しい。
タイムアップで機能を実装できていませんが、自作コードはこちらになります。
#!/usr/bin/perl use strict; use warnings; #my ($str, $search_str) = @ARGV; my ($str, $search_str) = ("this is a test.", "is"); my $index = -1; my @indexes; until ($index == 0) { my $ans = index($str, $search_str, $index); push @indexes, $ans; $index = $ans + 1; } print "@indexes\n";
実行結果はこちら(バグ有)
2 5 -1
−1は表示されてはいけませんね。
解答を見てみます。
微妙に自作解答と似ていますね。
もうひといきだったのかな。
解答を参考にして、コードを書き直してみます。
#!/usr/bin/perl use strict; use warnings; #my ($str, $search_str) = @ARGV; my ($str, $search_str) = ("this is a test.", "is"); my @indexes; for (my $start_idx = -1; ; ) { $start_idx = index($str, $search_str, $start_idx + 1); last if ($start_idx == -1); push @indexes, $start_idx; } print "@indexes\n";
実行結果はこちら。
2 5
このレベルの問題を悩まずサクサク進めたら理想なんですけどねー。
精進精進。