回答編集履歴
2
加筆修正
answer
CHANGED
@@ -1,11 +1,3 @@
|
|
1
|
-
`$a[$i], $b[$i]`って表記があるけど、
|
2
|
-
$i番目の文字ひとつ欲しい場合はこれだとおかしい。
|
3
|
-
[PHP: substr - Manual](http://php.net/manual/ja/function.substr.php)
|
4
|
-
を使って
|
5
|
-
`substr($a, $i, 1)`みたいに書かないと。
|
6
|
-
|
7
|
-
---
|
8
|
-
|
9
1
|
> 2つの文字列のスペルがまったく同じであれば、2を返す。
|
10
2
|
> 二つの文字列のスペルが1つだけ異なる場合、1を返す。
|
11
3
|
> その他は、0を返す。
|
@@ -33,7 +25,7 @@
|
|
33
25
|
}
|
34
26
|
$count = 0;
|
35
27
|
for($i = 0; $i < strlen($a); $i++) {
|
36
|
-
if($this->isSame(
|
28
|
+
if($this->isSame($a[$i], $b[$i]) == 1){
|
37
29
|
$count +=1;
|
38
30
|
}
|
39
31
|
}
|
1
加筆修正
answer
CHANGED
@@ -2,4 +2,48 @@
|
|
2
2
|
$i番目の文字ひとつ欲しい場合はこれだとおかしい。
|
3
3
|
[PHP: substr - Manual](http://php.net/manual/ja/function.substr.php)
|
4
4
|
を使って
|
5
|
-
`substr($a, $i, 1)`みたいに書かないと。
|
5
|
+
`substr($a, $i, 1)`みたいに書かないと。
|
6
|
+
|
7
|
+
---
|
8
|
+
|
9
|
+
> 2つの文字列のスペルがまったく同じであれば、2を返す。
|
10
|
+
> 二つの文字列のスペルが1つだけ異なる場合、1を返す。
|
11
|
+
> その他は、0を返す。
|
12
|
+
|
13
|
+
3行それぞれを評価するのに、最も重い処理は2を返す条件じゃないかな、
|
14
|
+
次に重いのは1を返す条件で、
|
15
|
+
簡単に判別できて大多数の結果がそうなるであろう条件は0。
|
16
|
+
って考えると、
|
17
|
+
0を返す条件をもう少し深掘りする。
|
18
|
+
|
19
|
+
・互いの文字列長が異なる
|
20
|
+
|
21
|
+
って判定を最初に持ってくれば、さっさと0を返して終われる判定。
|
22
|
+
|
23
|
+
$this->outputをわざわざ使う理由がよくわからないけど、
|
24
|
+
メソッド内ローカル変数を使ってもいいんだよ。
|
25
|
+
|
26
|
+
一文字でも違っていれば1を返すのだから、
|
27
|
+
文字列のアタマから照合して
|
28
|
+
|
29
|
+
```
|
30
|
+
public function compare($a, $b){
|
31
|
+
if (strlen($a) !== strlen($b)) {
|
32
|
+
return 0;
|
33
|
+
}
|
34
|
+
$count = 0;
|
35
|
+
for($i = 0; $i < strlen($a); $i++) {
|
36
|
+
if($this->isSame(substr($a, $i, 1), substr($b, $i, 1)) == 1){
|
37
|
+
$count +=1;
|
38
|
+
}
|
39
|
+
}
|
40
|
+
if($this->count == 0){
|
41
|
+
return 2;
|
42
|
+
}
|
43
|
+
else {
|
44
|
+
return 1;
|
45
|
+
}
|
46
|
+
}
|
47
|
+
```
|
48
|
+
|
49
|
+
ってのはダメでしょうか。
|