【LeetCode】557.Reverse Words in a String III

灰太狼 2022-06-01 03:47 254阅读 0赞

题目:https://leetcode.com/problems/reverse-words-in-a-string-iii/description/

Given a string, you need to reverse the order of characters in each word within a sentence while still preserving whitespace and initial word order.

Example 1:

  1. Input: "Let's take LeetCode contest"
  2. Output: "s'teL ekat edoCteeL tsetnoc"

Note: In the string, each word is separated by single space and there will not be any extra space in the string.

思路

先分割字符串— 反转每一个Word— 拼接起来。

我的代码 149ms

  1. public static String reword(String s){
  2. int i=0;
  3. int j=s.length()-1;
  4. char[] cs = s.toCharArray();
  5. char temp;
  6. while(i<j){
  7. temp = cs[i];
  8. cs[i] = cs[j];
  9. cs[j] = temp;
  10. i++;
  11. j--;
  12. }
  13. return String.valueOf(cs);
  14. }
  15. public String reverseWords(String s) {
  16. String res = "";
  17. String[] arr = s.split(" ");
  18. for(int i=0; i<arr.length; i++){
  19. res = res + reword(arr[i])+" ";
  20. }
  21. return res.substring(0, res.length()-1);
  22. }

【学习他人】

思路一样

代码 17ms

  1. public String reverseWord(String s){
  2. String[] strings = s.split(" ");
  3. StringBuilder stringBuilder = new StringBuilder();
  4. StringBuffer stringBuffer ;
  5. for (int i = 0; i < strings.length; i++) {
  6. stringBuffer = new StringBuffer(strings[i]);
  7. stringBuilder.append(stringBuffer.reverse().toString() + " ");
  8. }
  9. return stringBuilder.toString().substring(0, stringBuilder.length() - 1);
  10. }

【总结】

String、StringBuffer、StringBuilder的使用:

String 是字符串常量

StringBuffer 字符串变量(线程安全)

StringBuilder 字符串变量(非线程安全)

String类是不可变类,任何对String的改变都 会引发新的String对象的生成;StringBuffer则是可变类,任何对它所指代的字符串的改变都不会产生新的对象。

HashTable是线程安全的,很多方法都是synchronized方法,而HashMap不是线程安全的,但其在单线程程序中的性能比HashTable要高。StringBuffer和StringBuilder类的区别也是如此,他们的原理和操作基本相同,区别在于StringBufferd支持并发操作,线性安全的,适 合多线程中使用。StringBuilder不支持并发操作,线性不安全的,不适合多线程中使用。新引入的StringBuilder类不是线程安全的,但其在单线程中的性能比StringBuffer高。

如果我们的程序是在单线程下运行,或者是 不必考虑到线程同步问题,我们应该优先使用StringBuilder类 ;如果要 保证线程安全,自然是StringBuffer 。

参考文章:

三者区别:http://blog.csdn.net/rmn190/article/details/1492013

区别+代码+方法:http://blog.csdn.net/mad1989/article/details/26389541

发表评论

表情:
评论列表 (有 0 条评论,254人围观)

还没有评论,来说两句吧...

相关阅读