作业帮 > 综合 > 作业

哈 问下你怎么想的这道题 下面程序能具体解释下么

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/07/18 22:54:20
哈 问下你怎么想的这道题 下面程序能具体解释下么
public static long getConvertInt(long lInput)
{
if(lInput == 0)
{
return 0;
}
String str = String.valueOf(lInput).replaceAll("0+$","");
char[] chars = str.toCharArray();
StringBuffer buffer = new StringBuffer();
for(int i = chars.length - 1; i >= 0; i--)
{
if (str.lastIndexOf(chars[i]) == i) {
buffer.append(chars[i]);
}
}
return Long.valueOf(buffer.toString());
}
是0就直接输出,实际上只要是1位数就可以直接输出
否则把数字变成字符串str,并且用正则“0+$”把末尾的0去掉
从后往前遍历str每个字符,如果遍历到的字符在str中最后一次出现的位置和遍历到的位置相同,那么说明只出现了这一次,或者出现了多次,但是这是从右往左第一次出现
满足3的字符放进buffer里
转成long返回