回答編集履歴

2

コードの再変更

2020/08/12 15:17

投稿

kazuma-s
kazuma-s

スコア8224

test CHANGED
@@ -6,25 +6,25 @@
6
6
 
7
7
  class Test {
8
8
 
9
- static final int[] t = {
9
+ static final String t =
10
10
 
11
- //ぁ
11
+ "そ" +
12
12
 
13
- -1,0,-1,0,-1,0,-1,0,-1,0, 0,1,0,1,0,1,0,1,0,1, 0,1,0,1,0,1,0,1,0,1,
13
+ "たたちちつつつててととなにぬねのはははひひひふふふへへへほほほ" +
14
14
 
15
- //ただちぢっつづてでとど なにぬねの はばぱひびぴふぶぷへべぺほぼぽ
15
+ "まみむめもややゆゆよよらりるれろわわゐゑをん";
16
16
 
17
- 0,1,0,1,-1,0,1,0,1,0,1, 0,0,0,0,0, 0,1,2,0,1,2,0,1,2,0,1,2,0,1,2,
17
+ // ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞ
18
18
 
19
- //まみむめも ゃや ゅゆ ょよ らりるれろ ゎわゐゑを ん
19
+ // ただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽ
20
20
 
21
- 0,0,0,0,0, -1,0,-1,0,-1,0, 0,0,0,0,0, -1,0,0,0,0, 0
21
+ // まみむめもゃやゅゆょよらりるれろゎわゐゑをん
22
22
 
23
- };
23
+
24
24
 
25
25
  static char convChar(char c) {
26
26
 
27
- if (c >= 'ぁ' && c <= 'ん') c -= t[c - 'ぁ'];
27
+ if (c >= 'ぁ' && c <= 'ん') c = t.charAt(c - 'ぁ');
28
28
 
29
29
  return c;
30
30
 
@@ -73,3 +73,11 @@
73
73
  謎の配列 t の 意味が分かるようにコメントを追加しました。
74
74
 
75
75
  String の += は効率が悪そうなので、StringBuffer の append に変更しました。
76
+
77
+
78
+
79
+ **追記2**
80
+
81
+ さらにコードを変更しました。
82
+
83
+ 変換表を文字列で持てば、文字コードの足し算引き算は不要でした。

1

コードの変更

2020/08/12 15:17

投稿

kazuma-s
kazuma-s

スコア8224

test CHANGED
@@ -8,13 +8,43 @@
8
8
 
9
9
  static final int[] t = {
10
10
 
11
+ //ぁあ ぃい ぅう ぇえ ぉお かがきぎくぐけげこご さざしじすずせぜそぞ
12
+
11
13
  -1,0,-1,0,-1,0,-1,0,-1,0, 0,1,0,1,0,1,0,1,0,1, 0,1,0,1,0,1,0,1,0,1,
14
+
15
+ //ただちぢっつづてでとど なにぬねの はばぱひびぴふぶぷへべぺほぼぽ
12
16
 
13
17
  0,1,0,1,-1,0,1,0,1,0,1, 0,0,0,0,0, 0,1,2,0,1,2,0,1,2,0,1,2,0,1,2,
14
18
 
19
+ //まみむめも ゃや ゅゆ ょよ らりるれろ ゎわゐゑを ん
20
+
15
- 0,0,0,0,0, -1,0,-1,0,-1,0, 0,0,0,0,0, -1,0,0,0,0,0, 0
21
+ 0,0,0,0,0, -1,0,-1,0,-1,0, 0,0,0,0,0, -1,0,0,0,0, 0
16
22
 
17
23
  };
24
+
25
+ static char convChar(char c) {
26
+
27
+ if (c >= 'ぁ' && c <= 'ん') c -= t[c - 'ぁ'];
28
+
29
+ return c;
30
+
31
+ }
32
+
33
+
34
+
35
+ static String convStr(String s) {
36
+
37
+ StringBuilder sb = new StringBuilder();
38
+
39
+ for (int i = 0; i < s.length(); i++)
40
+
41
+ sb.append(convChar(s.charAt(i)));
42
+
43
+ return sb.toString();
44
+
45
+ }
46
+
47
+
18
48
 
19
49
  public static void main(String[] args) {
20
50
 
@@ -32,30 +62,14 @@
32
62
 
33
63
  }
34
64
 
35
-
36
-
37
- static String convStr(String s) {
38
-
39
- String t = "";
40
-
41
- for (int i = 0; i < s.length(); i++)
42
-
43
- t += convChar(s.charAt(i));
44
-
45
- return t;
46
-
47
- }
48
-
49
-
50
-
51
- static char convChar(char c) {
52
-
53
- if (c >= 'ぁ' && c <= 'ん') c -= t[c - 'ぁ'];
54
-
55
- return c;
56
-
57
- }
58
-
59
65
  }
60
66
 
61
67
  ```
68
+
69
+ **追記**
70
+
71
+ コードを変更しました。
72
+
73
+ 謎の配列 t の 意味が分かるようにコメントを追加しました。
74
+
75
+ String の += は効率が悪そうなので、StringBuffer の append に変更しました。