3 回答
TA贡献1848条经验 获得超2个赞
找到“ a”的第一个索引(String.indexOf())和“ o”的最后一个索引(String.lastIndexOf())。如果两个索引均大于-1,则交换字母
就像是:
public class StackOverflow {
public static void main(String[] args) {
String data = "aaligatoor";
int firstAindex = data.indexOf("a");
int lastOindex = data.lastIndexOf("o");
if (firstAindex > -1 && lastOindex > -1) {
char[] letters = data.toCharArray();
letters[firstAindex] = 'o';
letters[lastOindex] = 'a';
data = new String(letters);
}
System.out.println(data);
}
}
结果
oaligatoar
TA贡献1811条经验 获得超5个赞
String s = "aalligatoor";
int oIndex = s.lastIndexOf('o');
int aIndex = s.indexOf('a');
if (oIndex > -1 && aIndex > -1) {
char[] stringArray = s.toCharArray();
stringArray[oIndex] = 'a';
stringArray[aIndex] = 'o';
s = new String(stringArray);
System.out.println(s);
}
应该可以在空间和时间上明智。而且很容易理解和理解。
该indexOf方法返回-1,如果字母没有在字符串中找到。因此,我们可以进行检查,只需将字母分配给char数组中的位置即可。请记住,Java中的字符串是不可变的,因此我们不能将新位置分配给原始字符串。
最后,我们可以将char数组重新转换为交换后的字符串。
添加回答
举报