我正在为字符串编写一种形式的单词扰频器,该字符串将除第一个和最后一个字母以外的所有字母都旋转,并旋转其位置。但是,我应该只看倒数第二个字母。我应该如何只从倒数第二个字母到倒数第二个字母?
例如将“字符串”争夺为“ srintg”
我可以在通过分割字符串创建的字符数组上调用Collections.rotate(),但这会扰乱整个单词。
List<String> newWordList = Arrays.asList(word.split(" "));
Collections.rotate(newWordList, -1);
String newWord = String.join("", newWordList);
我想获得输出“ srintg”,但我将获得“ rintgs”。
答案 0 :(得分:0)
假设您的单词足够长,足以使其有意义(至少四个字母),则可以通过旋转列表的子列表来使呈现的方法有效:
Collections.rotate(newWordList.subList(1, newWordList.size() - 1), -1);
List.subList()
创建List
列表一部分的视图,其确切目的是避免需要对在元素的索引子范围上运行的版本重载List
方法。从快速书写的意义上讲,这是“快速的”,这很明显。
但是,如果您在性能上追求“快速”,那么分割和连接字符串似乎是不明智的。我们无法提供Fast est ,因为需要对性能进行测试,但是如果我要寻找最佳性能,那么我将至少测试以下常规方法:
String.toCharArray()
获取数组形式的单词字母。for
循环旋转数组中的字符。String
。StringBuilder
组合单词
StringBuilder
。CharacterIterator
遍历单词的字母,并按要求的顺序将其附加到生成器中。这可以一次完成。