【发布时间】:2018-07-20 18:19:05
【问题描述】:
我有一个包含字符串的文本文件。我的问题是我不知道如何搜索特定的字符串。我似乎只能搜索某些字符。我需要使代码递归。
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.util.Scanner;
import java.util.Stack;
public class LangValidator {
private static final char delimeter = '$';
public static boolean isValidString(String s) {
//Hint: use a stack of characters:
Stack<Character> stack = new Stack<Character>();
int i = 0;
char c;
while (i < s.length()) {
c = s.charAt(i);
if (c == delimeter)
break;
stack.push(c);
i++;
}
i++;
while (i < s.length()) {
c = s.charAt(i);
if (stack.isEmpty()) return false;
if (stack.pop() != c) return false;
i++;
}
return stack.isEmpty();
}
//这是我有错误的部分。我可以搜索特定字符,但是当我尝试使用字符串时,我得到一个错误,我只能添加字符常量。
public static boolean isValidStringRec(String s) {
if (s == null) return false;
char[] ch = s.toCharArray();
for (char c : ch) if (c != '$' && c != 'b') return true;
if(s == "$$$") return false;
return false;
}
public static void main(String[] args) throws FileNotFoundException {
Scanner fin = new Scanner(new FileReader("input.txt"));
while (fin.hasNext()) {
String str = fin.nextLine();
System.out.println(str);
System.out.println(isValidStringRec(str));
System.out.println();
}
}
}
更新:这是输入文件:
$
$$$
a$a
abab$abab
ab$ba$ab$ba
aba$abaa
bbbaaa$aaabbb
aabb$bba
aba$aba
【问题讨论】:
-
旁注:您在某些地方使用花括号,而在其他地方则没有。你应该在所有的 for、if、while 等之后使用它们来使代码清晰易读。
-
很高兴知道,谢谢。
-
你能澄清一下你的问题吗?根据您所讨论的方法的代码,如果给定的字符串仅由 3 个 $ 组成,它似乎返回 false。对吗?
-
另外,如果给定字符串中的字符都不是'$'和'b',您能否确认该方法应该返回true,并且在所有其他情况下将返回false?跨度>
标签: java string recursion character constants