博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
反转字符串中的单词 Reverse Words in a String III
阅读量:6877 次
发布时间:2019-06-26

本文共 1504 字,大约阅读时间需要 5 分钟。

hot3.png

问题:

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:

Input: "Let's take LeetCode contest"Output: "s'teL ekat edoCteeL tsetnoc"。

解决:

① 使用StringBuilder执行,实现非常方便,但是耗时长。

public class Solution {//20ms

    public String reverseWords(String s) {
        if(s == null) return null;
        StringBuilder sb = new StringBuilder();
        String[] schar = s.split(" ");
        for (String sc : schar) {
            for (int i = sc.length() - 1;i >= 0 ;i -- ) {
                sb.append(sc.charAt(i));
            }
            sb.append(" ");
        }
        sb.deleteCharAt(sb.length() - 1);
        return sb.toString();
    }
}

进化版:

public class Solution {//14 ms

    public String reverseWords(String s) {
        String[] words = s.split(" ");
        StringBuilder sb = new StringBuilder();
        boolean isFirst = true;
        for(String word : words){
            StringBuilder temp = new StringBuilder(word);
            word = temp.reverse().toString();
            if(isFirst){
                sb.append(word);
                isFirst = false;
            }else{
                sb.append(" " + word);
            }
        }
        return sb.toString();
    }
}

② 全部用数组实现:

public class Solution {//6ms

    public String reverseWords(String s) {
        char[] schar = s.toCharArray();
        int start = 0;
        int end;
        while((end = s.indexOf(' ',start)) != -1){
            reverse(schar,start,end - 1);
            start = end + 1;
        }
        reverse(schar,start,schar.length - 1);
        return new String(schar);
    }
    public void reverse(char[] arr,int start,int end){
        while(start <= end){
            char tmp = arr[start];
            arr[start] = arr[end];
            arr[end] = tmp;
            start ++;
            end --;
        }
    }
}

转载于:https://my.oschina.net/liyurong/blog/1204503

你可能感兴趣的文章
mysql之innodb的mvcc多版本控制
查看>>
使用 LogStash 归集日志
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
德国博世百年风雨启示录(下):实业强国
查看>>
(整理)用Elixir做一个多人扑克游戏 4
查看>>
关于架构
查看>>
The application’s PagerAdapter changed the adapter’s contents without calling PagerA
查看>>
qcom 跨平台的串口调试工具 PKGBUILD
查看>>
Delphi 时间格式化,动态显示时间,显示最新时间
查看>>
在JAVA中将NEW一分为2,分步进行[反射机制产生类]
查看>>
Java多态性的两个特殊情况
查看>>
我的友情链接
查看>>
怎么改变Win7登陆背景图片
查看>>
虚拟带库和物理带库比较
查看>>
AD委派加域权限
查看>>
在Delphi 7中使用加密的SQLite
查看>>
wordpress 无用的RSS Feed Cache
查看>>
Linux Vi编辑器的基本使用方法
查看>>
HTTP头域列表与解释 之 response篇
查看>>