数组Java程序以打印字符串中只有一次可用的字符
我试图打印字符串中只出现一次的字符。这是我正在使用的代码,但它总是以H显示答案
我该怎么解决这个问题
class StringRepeat {
static int i,j;
public static void main(String[] args) {
String s1 = "How are How";
outer:for(i=0;i<=s1.length(); i++)
{
inner:for(j=1;j<s1.length(); j++)
{
if (s1.charAt(i) != s1.charAt(j))
break outer;
}
}
System.out.println(s1.charAt(i));
}
}
# 1 楼答案
试试这个
希望这有帮助。我假设你对待小写和大写的态度和其他你可以相应修改的一样
# 2 楼答案
基本上,你可以用两种方法解决这个问题——蛮力(使用数组)和更智能一点(使用地图)
蛮力方式
对于输入字符串中的每个字符,检查其是否与其他字符相同:
代码很简单,但速度很慢,所以只能用于短字符串。时间复杂度为
O(n^2)
使用地图
在迭代输入时,计算每个字符出现的次数。最后,只打印出现一次的内容:
这可以进一步优化,但这可能足以满足您的需求。时间复杂度为
O(n)
# 3 楼答案
如果没有唯一性,这将给出一个
StringIndexOutOfBoundsException
可以找到char:换成
不需要内部标签,您需要开始搜索 从0开始,而不是1,所以替换
与
你的考试被颠倒了。如果时不进行比较。因此,您的测试更改为:
i
和j
处的字符是 同样,你需要继续与外部循环。而且,你需要 确保在^{到
如果内部for循环终止,即到达 字符串,那么
i
处的字符是唯一的,所以我们需要进行拆分 外环的一部分i < s1.length()
,就会出现这种情况李>综上所述,我们得到:
这里是代码(IDEOne)的链接
# 4 楼答案
这将打印出文本中只出现一次的每个字符