ArrayList中每个条目中字符的反转顺序[重复]

Posted

技术标签:

【中文标题】ArrayList中每个条目中字符的反转顺序[重复]【英文标题】:Reverse order of characters in every entry in an ArrayList [duplicate] 【发布时间】:2013-04-18 10:06:54 【问题描述】:

我有一个包含多个条目的 ArrayList,我想颠倒顺序或字符,所以如果我的代码如下所示:

public class Test 

ArrayList<String> aa = new ArrayList<String>();

aa.add("hello");
aa.add("goodbye");

(reverse them in some way)



那么我希望 ArrayList 包含的是:

olleh
eybdoog

我只是设法使用 Collections.reverse 更改了整个 ArrayList 中条目的顺序,但这确实不是我想要的。

【问题讨论】:

其实不是一回事。 OP 希望保持 a​​rraylist 元素的顺序,但希望将每个元素替换为反转为字符串的元素。 【参考方案1】:

StringBuilder class(可变字符串)包含切换 StringBuilder 字符的反向操作。

int size = aa.size();
for(int i = 0; i < size; ++i)

    StringBuilder builder = new StringBuilder(aa.get(i));
    builder.reverse();    //reverse the StringBuilder
    aa.set(i, builder.toString());

【讨论】:

【参考方案2】:

又快又脏的版本——改变原来ArrayList里面的Strings

for(int i = 0; i < aa.size(); i++) 
    aa.set(i, new StringBuilder(aa.get(i)).reverse().toString());

【讨论】:

【参考方案3】:

这是一个线性时间实现,在原地修改列表。

public void reverseStr(List<String> theArgs) 
   for(int i = 0; i < theArgs.size(); i++) 
       String s = theArgs.get(i);
       theArgs.set(i, new StringBuffer(s).reverse().toString());
   

【讨论】:

【参考方案4】:

这样做:

Best way to reverse a string

    static void Main(string[] args)
    
        var aa = new List<String>();

        aa.Add("hello");
        aa.Add("goodbye");

        var x = from s in aa select Reverse(s);

        foreach (var c in x)
            Console.WriteLine(c.ToString( ));

        Console.ReadLine();
    

    public static string Reverse(string s)
    
        char[] charArray = s.ToCharArray();
        Array.Reverse(charArray);
        return new string(charArray);
    

【讨论】:

这是 C# 吗?我猜这个问题已经被标记在 Java 下。

以上是关于ArrayList中每个条目中字符的反转顺序[重复]的主要内容,如果未能解决你的问题,请参考以下文章

反转字符数组中单词的顺序

反转单词顺序 VS 左旋转字符串

557. 反转字符串中的单词 III

Leetcode刷题100天—3. 无重复字符的最长子串(双指针)—day21

Leetcode刷题100天—3. 无重复字符的最长子串(双指针)—day21

557-反转字符串中的单词 III