回答編集履歴

3

負数最大値に対応(暫定)

2019/11/15 03:04

投稿

jimbe
jimbe

スコア12648

test CHANGED
@@ -12,17 +12,19 @@
12
12
 
13
13
  //負数は正数化
14
14
 
15
+ long l = i;
16
+
15
- if(i < 0) {
17
+ if(l < 0) {
16
18
 
17
19
  sb.append('-');
18
20
 
19
- i *= -1;
21
+ l *= -1;
20
22
 
21
23
  }
22
24
 
23
25
  //文字列化
24
26
 
25
- String s = ""+i;
27
+ String s = ""+l;
26
28
 
27
29
  //最初の1~SEPARATE_WIDTH文字を処理
28
30
 

2

"3" を定数化

2019/11/15 03:04

投稿

jimbe
jimbe

スコア12648

test CHANGED
@@ -3,6 +3,8 @@
3
3
 
4
4
 
5
5
  ```java
6
+
7
+ static final int SEPARATE_WIDTH = 3;
6
8
 
7
9
  private static String commaSeparatedString(int i) {
8
10
 
@@ -22,19 +24,19 @@
22
24
 
23
25
  String s = ""+i;
24
26
 
25
- //最初の1~3文字を処理
27
+ //最初の1~SEPARATE_WIDTH文字を処理
26
28
 
27
- int e = s.length() % 3;
29
+ int e = s.length() % SEPARATE_WIDTH;
28
30
 
29
- if(e == 0) e = 3;
31
+ if(e == 0) e = SEPARATE_WIDTH;
30
32
 
31
33
  sb.append(s.substring(0, e));
32
34
 
33
- //残りを3文字ずつ処理
35
+ //残りをSEPARATE_WIDTH文字ずつ処理
34
36
 
35
- for(int j=e; j<s.length(); j+=3) {
37
+ for(int j=e; j<s.length(); j+=SEPARATE_WIDTH) {
36
38
 
37
- sb.append(',').append(s.substring(j, j+3));
39
+ sb.append(',').append(s.substring(j, j+SEPARATE_WIDTH));
38
40
 
39
41
  }
40
42
 

1

s を更新せず index を使うように修正

2019/11/14 16:43

投稿

jimbe
jimbe

スコア12648

test CHANGED
@@ -30,15 +30,11 @@
30
30
 
31
31
  sb.append(s.substring(0, e));
32
32
 
33
- s = s.substring(e);
34
-
35
33
  //残りを3文字ずつ処理
36
34
 
37
- while(s.length() >= 1) {
35
+ for(int j=e; j<s.length(); j+=3) {
38
36
 
39
- sb.append(',').append(s.substring(0, 3));
37
+ sb.append(',').append(s.substring(j, j+3));
40
-
41
- s = s.substring(3);
42
38
 
43
39
  }
44
40