回答編集履歴

3

コードの修正

2021/12/21 21:41

投稿

kazuma-s
kazuma-s

スコア8224

test CHANGED
@@ -86,45 +86,45 @@
86
86
 
87
87
  class Main {
88
88
 
89
- public static boolean matchBrackets(String str) {
89
+ public static boolean matchBrackets(String str) {
90
90
 
91
- int count = 0;
91
+ int count = 0;
92
92
 
93
- for (char c : str.toCharArray()) {
93
+ for (char c : str.toCharArray())
94
94
 
95
- if (c == '(') count++;
95
+ if (c == '(')
96
96
 
97
- else if (c == ')')
97
+ count++;
98
98
 
99
- if (--count < 0) break;
99
+ else if (c == ')' && --count < 0)
100
100
 
101
- }
101
+ break;
102
102
 
103
- return count == 0;
103
+ return count == 0;
104
104
 
105
- }
105
+ }
106
106
 
107
107
 
108
108
 
109
- public static void main(String[] args) {
109
+ public static void main(String[] args) {
110
110
 
111
- String[] examples = {
111
+ String[] examples = {
112
112
 
113
- "(a+b)^2 = a^2+2*a*b+b^2",
113
+ "(a+b)^2 = a^2+2*a*b+b^2",
114
114
 
115
- "(()))(",
115
+ "(()))(",
116
116
 
117
- "(Santa()Claus is))comming(",
117
+ "(Santa()Claus is))comming(",
118
118
 
119
- "[(])"
119
+ "[(])"
120
120
 
121
- };
121
+ };
122
122
 
123
- for (String str : examples)
123
+ for (String str : examples)
124
124
 
125
- System.out.println(str + " : " + matchBrackets(str));
125
+ System.out.println(str + " : " + matchBrackets(str));
126
126
 
127
- }
127
+ }
128
128
 
129
129
  }
130
130
 

2

追記2

2021/12/21 21:41

投稿

kazuma-s
kazuma-s

スコア8224

test CHANGED
@@ -65,3 +65,67 @@
65
65
 
66
66
 
67
67
  意味が分かるように問題文全体を改変や省略なしにコピペしてもらえませんか?
68
+
69
+
70
+
71
+ **追記2**
72
+
73
+ 問題文は、「文字列内の丸括弧が数式として正しい形式かどうかを調べる
74
+
75
+ public boolean matchBrackets(String str) というコードを書け」ですね。
76
+
77
+
78
+
79
+ "[(])" が正しいことから、丸括弧以外の文字は無視してよいことが分かります。
80
+
81
+ すなわち、「(」と「)」の対応がとれていれば良いということです。
82
+
83
+
84
+
85
+ ```java
86
+
87
+ class Main {
88
+
89
+ public static boolean matchBrackets(String str) {
90
+
91
+ int count = 0;
92
+
93
+ for (char c : str.toCharArray()) {
94
+
95
+ if (c == '(') count++;
96
+
97
+ else if (c == ')')
98
+
99
+ if (--count < 0) break;
100
+
101
+ }
102
+
103
+ return count == 0;
104
+
105
+ }
106
+
107
+
108
+
109
+ public static void main(String[] args) {
110
+
111
+ String[] examples = {
112
+
113
+ "(a+b)^2 = a^2+2*a*b+b^2",
114
+
115
+ "(()))(",
116
+
117
+ "(Santa()Claus is))comming(",
118
+
119
+ "[(])"
120
+
121
+ };
122
+
123
+ for (String str : examples)
124
+
125
+ System.out.println(str + " : " + matchBrackets(str));
126
+
127
+ }
128
+
129
+ }
130
+
131
+ ```

1

追記

2021/12/21 21:34

投稿

kazuma-s
kazuma-s

スコア8224

test CHANGED
@@ -33,3 +33,35 @@
33
33
  ```
34
34
 
35
35
  どういうつもりで `if ( s = int[], char[])` と書いていますか?
36
+
37
+
38
+
39
+ **追記**
40
+
41
+ > 「String内のかっこ”()”の中の文字列が、数式として書式化されているかどうかを
42
+
43
+ 真偽で判定するプログラム」
44
+
45
+
46
+
47
+ これが意味不明です。
48
+
49
+
50
+
51
+ 入力が "(a+b)^2" という String の時、かっこ "()" の中の文字列は "a+b" です。
52
+
53
+ "a+b" が数式として書式化されているかどうか、とはどういうことですか?
54
+
55
+ "^2" は括弧の中の文字列ではありませんが、これは無視していいのですか?
56
+
57
+
58
+
59
+ 入力が "([)]" という String の時、かっこ "()" の中の文字列は "[" です。
60
+
61
+ "[" が数式として書式化されているかどうか、とはどういうことですか?
62
+
63
+ "]" は括弧の中の文字列ではありませんが、これは無視していいのですか?
64
+
65
+
66
+
67
+ 意味が分かるように問題文全体を改変や省略なしにコピペしてもらえませんか?