teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

コードの再変更

2020/08/12 15:17

投稿

kazuma-s
kazuma-s

スコア8222

answer CHANGED
@@ -2,16 +2,16 @@
2
2
  import java.util.Scanner;
3
3
 
4
4
  class Test {
5
- static final int[] t = {
5
+ static final String t =
6
+ "ああいいううええおおかかききくくけけここささししすすせせそそ" +
7
+ "たたちちつつつててととなにぬねのはははひひひふふふへへへほほほ" +
8
+ "まみむめもややゆゆよよらりるれろわわゐゑをん";
6
- //ぁあ ぃい ぅう ぇえ ぉお かがきぎくぐけげこご さざしじすずせぜそぞ
9
+ // ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞ
7
- -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,
8
- //ただちぢっつづてでとど なにぬねの はばぱひびぴふぶぷへべぺほぼぽ
10
+ // ただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽ
9
- 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,
10
- //まみむめも ゃや ゅゆ ょよ らりるれろ ゎわゐゑを
11
+ // まみむめもゃやゅゆょよらりるれろゎわゐゑをん
11
- 0,0,0,0,0, -1,0,-1,0,-1,0, 0,0,0,0,0, -1,0,0,0,0, 0
12
+
12
- };
13
13
  static char convChar(char c) {
14
- if (c >= 'ぁ' && c <= 'ん') c -= t[c - 'ぁ'];
14
+ if (c >= 'ぁ' && c <= 'ん') c = t.charAt(c - 'ぁ');
15
15
  return c;
16
16
  }
17
17
 
@@ -35,4 +35,8 @@
35
35
  **追記**
36
36
  コードを変更しました。
37
37
  謎の配列 t の 意味が分かるようにコメントを追加しました。
38
- String の += は効率が悪そうなので、StringBuffer の append に変更しました。
38
+ String の += は効率が悪そうなので、StringBuffer の append に変更しました。
39
+
40
+ **追記2**
41
+ さらにコードを変更しました。
42
+ 変換表を文字列で持てば、文字コードの足し算引き算は不要でした。

1

コードの変更

2020/08/12 15:17

投稿

kazuma-s
kazuma-s

スコア8222

answer CHANGED
@@ -3,10 +3,25 @@
3
3
 
4
4
  class Test {
5
5
  static final int[] t = {
6
+ //ぁあ ぃい ぅう ぇえ ぉお かがきぎくぐけげこご さざしじすずせぜそぞ
6
7
  -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,
8
+ //ただちぢっつづてでとど なにぬねの はばぱひびぴふぶぷへべぺほぼぽ
7
9
  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,
10
+ //まみむめも ゃや ゅゆ ょよ らりるれろ ゎわゐゑを ん
8
- 0,0,0,0,0, -1,0,-1,0,-1,0, 0,0,0,0,0, -1,0,0,0,0,0, 0
11
+ 0,0,0,0,0, -1,0,-1,0,-1,0, 0,0,0,0,0, -1,0,0,0,0, 0
9
12
  };
13
+ static char convChar(char c) {
14
+ if (c >= 'ぁ' && c <= 'ん') c -= t[c - 'ぁ'];
15
+ return c;
16
+ }
17
+
18
+ static String convStr(String s) {
19
+ StringBuilder sb = new StringBuilder();
20
+ for (int i = 0; i < s.length(); i++)
21
+ sb.append(convChar(s.charAt(i)));
22
+ return sb.toString();
23
+ }
24
+
10
25
  public static void main(String[] args) {
11
26
  Scanner sc = new Scanner(System.in);
12
27
  while (sc.hasNext()) {
@@ -15,17 +30,9 @@
15
30
  System.out.println(s2);
16
31
  }
17
32
  }
18
-
19
- static String convStr(String s) {
20
- String t = "";
21
- for (int i = 0; i < s.length(); i++)
22
- t += convChar(s.charAt(i));
23
- return t;
24
- }
25
-
26
- static char convChar(char c) {
27
- if (c >= 'ぁ' && c <= 'ん') c -= t[c - 'ぁ'];
28
- return c;
29
- }
30
33
  }
31
- ```
34
+ ```
35
+ **追記**
36
+ コードを変更しました。
37
+ 謎の配列 t の 意味が分かるようにコメントを追加しました。
38
+ String の += は効率が悪そうなので、StringBuffer の append に変更しました。