题解 | #单词倒排#

单词倒排

http://www.nowcoder.com/practice/81544a4989df4109b33c2d65037c5836

一种实用的方法

import java.util.*;

public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()){
            String str = sc.nextLine();
            int len = str.length();
            StringBuilder sb = new StringBuilder();
            StringBuilder ans = new StringBuilder();
            //对输入的字符串进行整理,将所有非字母替换成空格,存放到 sb 中
            for(int i = 0; i < len; i++){
                if(Character.isLetter(str.charAt(i))){
                    sb.append(str.charAt(i));
                }else{
                    sb.append(" ");
                }
            }
            //开始定义指针遍历字符串
            int len_sb = sb.length();
            int left = 0, right = len_sb - 1;
            
            while(sb.charAt(left) == ' '){    //将最左边的空格清除
                left++;
            }
            while(sb.charAt(right) == ' '){    //将最右边的空格清除
                right--;
            }
            //开始遍历,反转单词
            while(left <= right){
                int index = right;
                while(index >= left && sb.charAt(index) != ' '){    //确定单词的开始位置
                    index--;
                }
                for(int i = index + 1; i <= right; i++){    //将单词加入到 ans 中
                    ans.append(sb.charAt(i));
                }
                if(index > left){                            //如果没有到最左边,就在每个单词右边添加空格
                    ans.append(' ');
                }
                
                while(index >= left && sb.charAt(index) == ' '){    //找到每个单词的结束位置
                    index--;
                }
                right = index;
            }
            System.out.print(ans.toString());
        }
    }
}
全部评论

相关推荐

勤奋努力的椰子这就开摆:美团骑手在美团工作没毛病
投递美团等公司10个岗位
点赞 评论 收藏
分享
有工作后先养猫:太好了,是超时空战警,我们有救了😋
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务