gpt4 book ai didi

java - 有没有办法在某些特定索引处用字符填充字符串?

转载 作者:行者123 更新时间:2023-12-02 01:33:02 25 4
gpt4 key购买 nike

有一个字符串“hello-world!”。除 A-Z 和 a-z 之外的任何字符都必须保持在同一位置,但字母必须颠倒。因此,输出将是“dlrow-olleh!”。

我使用字符串构建器来设计解决方案,但我很好奇是否可以声明长度为 12 的字符串并将其字符填充到索引 5 和 11,然后用反转字母填充剩余部分。

任何其他执行相同操作的技术或想法将不胜感激。

        StringBuilder sb = new StringBuilder();

for(int i=S.length()-1; i >= 0; i--) {
String c = ""+S.charAt(i);
if(c.matches("[A-Za-z]")) {
sb.append(c);
}
}

for(int i = 0; i < S.length(); i++) {
String c = ""+S.charAt(i);
if(!c.matches("[A-Za-z]"))
sb.insert(i,c);
}

我通过这种方式得到了输出,但是有什么方法可以在这里使用 String 而不是 StringBuilder 吗?

最佳答案

您不能按照您建议的方式使用String,因为String是不可变的。

替代StringBuilder的另一个选项是使用char的原始数组。您知道结果字符串将与源字符串具有相同的长度,因此您可以这样做:

  1. 使用String.toCharArray创建一个数组.
  2. 使用索引 ij 同时从两端进行迭代。索引 i 从 0 开始向前移动,j 从数组长度 - 1 开始向后移动。
  3. 使用 Character.isLetter 检查 i 和 j 处的元素是否有字母。如果不是字母,只需向前 i 或向后 j 跳过即可。
  4. 交换 i 和 j 处的数组元素。
  5. 在 i < j 时重复。
  6. 使用 new String(charArray) 创建新字符串

由于这看起来像一个练习,我将把实际的编码留给您。

警告:以上仅适用于 Unicode 代码点位于基本多语言平面中的字符串(即对你我而言的大多数字符串)。它不适用于包含某些字符(例如笑脸)的棘手情况(有关此潜在问题的更多信息,请参阅 https://dzone.com/articles/the-right-way-to-reverse-a-string-in-java )。

关于java - 有没有办法在某些特定索引处用字符填充字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55749864/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com