java - Java程序打印字符串中的第一个非重复字符
问题描述
public static void main(String[] args) {
String str = "XXYZZA";
char[] a = str.toCharArray();
int count=0;
for (int i = 0; i < a.length; i++)
{
if (a[i] == a[i++])
{
count++;
}
else
System.out.println(a[i++]);
}
}
“else”部分的打印语句没有被执行。所需的输出应该是
Y
A
解决方案
好的,首先,请适当的缩进,对理解代码有很大帮助。
其次,if (a[i] == a[i++])
这不是正确的方法,原因有两个
- 您的 for 循环将开始跳过i值,因为您使用的是一元运算符,它将直接作用于操作数。
- ArrayIndexOutOfBounds
a.length - 1
:一旦 i 达到测试条件的最大值,i++
将尝试访问indexa.length
处的元素,正如您可能已经猜到的那样,它不存在。
您需要的是某种排序算法,而无需实际保存排序序列。
推荐阅读
- python - 将数据结构(集合)存储为文件但不将其加载到内存中
- python-3.x - 月份格式化为名称时对日期时间列进行排序
- javascript - 如何获取名称中有多个空格的 json 属性?
- postgresql - Mac 上的 PostgreSQL 无法识别用户密码
- c++ - 如何有效地将大 std::string 的一部分转换为浮点数?
- python - BeautifulSoup - 处理类似网站结构的表格|返回字典
- java - 当有未知数量的空格时,替代正向后视
- fortran - 如何在 Fortran 中使用(初始化、操作、获取输出)mkl 句柄?
- android - 加载 Admob 时 Fragment 未附加到 FragmentManager
- xamarin - Xamarin:无法在 Android/iOS 中提取照片的中心正方形