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

回答編集履歴

3

コードの修正

2021/12/21 21:41

投稿

kazuma-s
kazuma-s

スコア8222

answer CHANGED
@@ -42,25 +42,25 @@
42
42
 
43
43
  ```java
44
44
  class Main {
45
- public static boolean matchBrackets(String str) {
45
+ public static boolean matchBrackets(String str) {
46
- int count = 0;
46
+ int count = 0;
47
- for (char c : str.toCharArray()) {
47
+ for (char c : str.toCharArray())
48
- if (c == '(') count++;
49
- else if (c == ')')
48
+ if (c == '(')
49
+ count++;
50
+ else if (c == ')' && --count < 0)
51
+ break;
50
- if (--count < 0) break;
52
+ return count == 0;
51
- }
53
+ }
52
- return count == 0;
53
- }
54
54
 
55
- public static void main(String[] args) {
55
+ public static void main(String[] args) {
56
- String[] examples = {
56
+ String[] examples = {
57
- "(a+b)^2 = a^2+2*a*b+b^2",
57
+ "(a+b)^2 = a^2+2*a*b+b^2",
58
- "(()))(",
58
+ "(()))(",
59
- "(Santa()Claus is))comming(",
59
+ "(Santa()Claus is))comming(",
60
- "[(])"
60
+ "[(])"
61
- };
61
+ };
62
- for (String str : examples)
62
+ for (String str : examples)
63
- System.out.println(str + " : " + matchBrackets(str));
63
+ System.out.println(str + " : " + matchBrackets(str));
64
- }
64
+ }
65
65
  }
66
66
  ```

2

追記2

2021/12/21 21:41

投稿

kazuma-s
kazuma-s

スコア8222

answer CHANGED
@@ -31,4 +31,36 @@
31
31
  "[" が数式として書式化されているかどうか、とはどういうことですか?
32
32
  "]" は括弧の中の文字列ではありませんが、これは無視していいのですか?
33
33
 
34
- 意味が分かるように問題文全体を改変や省略なしにコピペしてもらえませんか?
34
+ 意味が分かるように問題文全体を改変や省略なしにコピペしてもらえませんか?
35
+
36
+ **追記2**
37
+ 問題文は、「文字列内の丸括弧が数式として正しい形式かどうかを調べる
38
+ public boolean matchBrackets(String str) というコードを書け」ですね。
39
+
40
+ "[(])" が正しいことから、丸括弧以外の文字は無視してよいことが分かります。
41
+ すなわち、「(」と「)」の対応がとれていれば良いということです。
42
+
43
+ ```java
44
+ class Main {
45
+ public static boolean matchBrackets(String str) {
46
+ int count = 0;
47
+ for (char c : str.toCharArray()) {
48
+ if (c == '(') count++;
49
+ else if (c == ')')
50
+ if (--count < 0) break;
51
+ }
52
+ return count == 0;
53
+ }
54
+
55
+ public static void main(String[] args) {
56
+ String[] examples = {
57
+ "(a+b)^2 = a^2+2*a*b+b^2",
58
+ "(()))(",
59
+ "(Santa()Claus is))comming(",
60
+ "[(])"
61
+ };
62
+ for (String str : examples)
63
+ System.out.println(str + " : " + matchBrackets(str));
64
+ }
65
+ }
66
+ ```

1

追記

2021/12/21 21:34

投稿

kazuma-s
kazuma-s

スコア8222

answer CHANGED
@@ -15,4 +15,20 @@
15
15
  ^
16
16
  エラー3個
17
17
  ```
18
- どういうつもりで `if ( s = int[], char[])` と書いていますか?
18
+ どういうつもりで `if ( s = int[], char[])` と書いていますか?
19
+
20
+ **追記**
21
+ > 「String内のかっこ”()”の中の文字列が、数式として書式化されているかどうかを
22
+ 真偽で判定するプログラム」
23
+
24
+ これが意味不明です。
25
+
26
+ 入力が "(a+b)^2" という String の時、かっこ "()" の中の文字列は "a+b" です。
27
+ "a+b" が数式として書式化されているかどうか、とはどういうことですか?
28
+ "^2" は括弧の中の文字列ではありませんが、これは無視していいのですか?
29
+
30
+ 入力が "([)]" という String の時、かっこ "()" の中の文字列は "[" です。
31
+ "[" が数式として書式化されているかどうか、とはどういうことですか?
32
+ "]" は括弧の中の文字列ではありませんが、これは無視していいのですか?
33
+
34
+ 意味が分かるように問題文全体を改変や省略なしにコピペしてもらえませんか?