回答編集履歴

5

StringBuilderを使いまわすコードに変更

2015/05/23 05:35

投稿

swordone
swordone

スコア20651

test CHANGED
@@ -10,13 +10,17 @@
10
10
 
11
11
  int count = 0;
12
12
 
13
+ StringBuilder builder = new StringBuilder("0000 - 0000 = 0000");
14
+
13
15
  for(int a = 2000; a < 10000; a++){
16
+
17
+ builder.replace(0, 4, Integer.toString(a));
14
18
 
15
19
  Label: for(int b = 1000; b <= a - 1000; b++){
16
20
 
17
- StringBuilder builder = new StringBuilder();
21
+ builder.replace(7, 11, Integer.toString(b))
18
22
 
19
- builder.append(a).append(" - ").append(b).append(" = ").append(a - b);
23
+ .replace(14, 18, Integer.toString(a - b));
20
24
 
21
25
  for(String number: numbers){
22
26
 
@@ -26,7 +30,7 @@
26
30
 
27
31
  count++;
28
32
 
29
- System.out.println(builder);
33
+ //System.out.println(builder);
30
34
 
31
35
  }
32
36
 
@@ -40,4 +44,4 @@
40
44
 
41
45
  ```
42
46
 
43
- なみにIdeoneで試したところ,12以上かかりました.もっといい方法があるのでしょう・・・
47
+ ょっと変えました.Ideoneでの実行時間が10台と少し短縮されました.

4

コードミスを修正

2015/05/23 05:35

投稿

swordone
swordone

スコア20651

test CHANGED
@@ -16,7 +16,7 @@
16
16
 
17
17
  StringBuilder builder = new StringBuilder();
18
18
 
19
- builder.append(a).append(" - ").append(b).append.(" = ").append(a - b);
19
+ builder.append(a).append(" - ").append(b).append(" = ").append(a - b);
20
20
 
21
21
  for(String number: numbers){
22
22
 
@@ -32,10 +32,12 @@
32
32
 
33
33
  }
34
34
 
35
- System.out.println("答えは" + count)
35
+ System.out.println("答えは" + count);
36
36
 
37
37
  }
38
38
 
39
39
  }
40
40
 
41
41
  ```
42
+
43
+ ちなみにIdeoneで試したところ,12秒以上かかりました.もっといい方法があるのでしょう・・・

3

最後の}忘れ

2015/05/23 04:27

投稿

swordone
swordone

スコア20651

test CHANGED
@@ -36,4 +36,6 @@
36
36
 
37
37
  }
38
38
 
39
+ }
40
+
39
41
  ```

2

一部処理の変更

2015/05/23 04:21

投稿

swordone
swordone

スコア20651

test CHANGED
@@ -18,17 +18,15 @@
18
18
 
19
19
  builder.append(a).append(" - ").append(b).append.(" = ").append(a - b);
20
20
 
21
- String result = builder.toString();
22
-
23
21
  for(String number: numbers){
24
22
 
25
- if(!result.contains(number)) continue Label;
23
+ if(builder.indexOf(number) == -1) continue Label;
26
24
 
27
25
  }
28
26
 
29
27
  count++;
30
28
 
31
- System.out.println(result);
29
+ System.out.println(builder);
32
30
 
33
31
  }
34
32
 

1

「何通りか」をカウントしていなかったので追加

2015/05/23 04:20

投稿

swordone
swordone

スコア20651

test CHANGED
@@ -7,6 +7,8 @@
7
7
  public static void main(String args[]){
8
8
 
9
9
  final String[] numbers = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"};
10
+
11
+ int count = 0;
10
12
 
11
13
  for(int a = 2000; a < 10000; a++){
12
14
 
@@ -24,12 +26,16 @@
24
26
 
25
27
  }
26
28
 
29
+ count++;
30
+
27
31
  System.out.println(result);
28
32
 
29
33
  }
30
34
 
31
35
  }
32
36
 
37
+ System.out.println("答えは" + count)
38
+
33
39
  }
34
40
 
35
41
  ```