java - 给定字符串中字符的第一个索引和最后一个索引之间的差异
问题描述
我有一个字符串Unitedin
。这里 char "n" 出现在索引 1 和索引 6 处;索引号之间的差异为 5 类似地,“i”出现在索引 2 和索引 5 处。差异为 3。
我需要根据输出端差异的升序打印字符。
挑战是我不能使用任何类型的数组列表或 List 或 hashMap 或设置或链接哈希等
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
StringBuilder temp = new StringBuilder();
StringBuilder output = new StringBuilder();
System.out.println("Enter a string : ");
String instring = in.next();
for (int i = 0; i < instring.length(); i++) {
for (int j = i + 1; j < instring.length(); j++) {
if (instring.charAt(i) == instring.charAt(j)) {
temp.append(instring.charAt(i));
}
}
}
for (int m = 0; m < temp.length(); m++) {
for (int p = m + 1; p < temp.length(); p++) {
if (m == temp.length() - 1) {
output.append(temp.charAt(m));
} else if (instring.lastIndexOf(temp.charAt(m), 0) >= instring.lastIndexOf(temp.charAt(p), 0)) {
output.append(temp.charAt(p));
} else {
output.append(temp.charAt(m));
}
}
}
System.out.println(output);
}
我将输出作为
i
. 谁能帮我?预期产出 =in
解决方案
嗯。像那样。这不是最好的性能,但它不使用Collections
:
public static String foo(String str) {
str = str.toLowerCase();
int[] letters = new int[26];
Arrays.fill(letters, Integer.MIN_VALUE);
for (int i = 0; i < str.length(); i++)
if (letters[str.charAt(i) - 'a'] == Integer.MIN_VALUE)
letters[str.charAt(i) - 'a'] = -i;
for (int i = str.length() - 1; i >= 0; i--)
if (letters[str.charAt(i) - 'a'] != Integer.MIN_VALUE)
letters[str.charAt(i) - 'a'] += i;
return IntStream.range(0, letters.length)
.filter(i -> letters[i] > 0)
.boxed()
.sorted(Comparator.comparingInt(i -> letters[i]))
.map(i -> String.valueOf((char)('a' + i)))
.collect(Collectors.joining());
}
如果您不想使用Streams
,那么第二部分:
int cur = 1;
boolean checkNext;
StringBuilder buf = new StringBuilder();
do {
checkNext = false;
for (int i = 0; i < letters.length; i++) {
if (letters[i] < cur)
continue;
checkNext = true;
if (letters[i] == cur)
buf.append((char)('a' + i));
}
cur++;
} while (checkNext);
return buf.toString();
推荐阅读
- java - 当我尝试使用 selenium 在 Firefox 中使用 google 搜索结果填充列表时,该列表为空
- postgresql - 如何将 PostGIS ST_Within 应用于列中的所有行
- c - 对于素数和非素数,程序没有按预期工作
- javascript - 如何将子元素附加到 React 元素?
- python - 如何在 df 中保留 dtype('o') 而不是 bool
- azure - 从 Azure DevOps 运行 dotCover 时出错
- excel - Text in "Values" of Pivot Table fields
- couchdb - CoachDb limit between two values
- php - Updating foreign key with PDO OOP
- python - 阻止 Python enumerate() 将字符串拆分为字符