• 字符串翻转


    题目:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理。例如输入“It's a good day.”,则输出“day. good a It's”

    思路1:先翻转整个字符串,然后从首字母开始,每扫描一个单词(遇到空格),翻转一个单词

        /**
         * 字符串翻转
         * 输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理。例如输入“It's a good day.”,则输出“day. good a It's”
         * 思路:先翻转整个字符串,然后从首字母开始,每扫描一个单词(遇到空格),翻转一个单词
         *
         * @param input
         * @return
         */
        public String reverse(String input) {
            char[] output = input.toCharArray();
            reverse(output, 0, output.length);
    
            int i = 0;
            for (int j = 0; j < output.length; j++) {
                if (output[j] == ' ') {
                    reverse(output, i, j);
                    i = j + 1;
                }
            }
            reverse(output, i, output.length);
            //reverse(output, , output.length);
    
            return String.valueOf(output);
        }
    
        /**
         * 翻转整个字符数组
         *
         * @param input
         * @param begin
         * @param end
         */
        private void reverse(char[] input, int begin, int end) {
            if (begin == end) return;
            while (begin < --end) {
                char c = input[begin];
                input[begin] = input[end];
                input[end] = c;
                begin++;
            }
        }

    思路2:创建一个字符数组,逆序遍历整个字符串,依次将扫描到的单词(遇到空格)存放到字符数组中

        /**
         * 字符串翻转
         * 输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理。例如输入“It's a good day.”,则输出“day. good a It's”
         * 思路:创建一个字符数组,逆序遍历整个字符串,依次存将扫描到的单词(遇到空格)存放到字符数组中
         * @param input
         * @return
         */
        public String Reverse(String input) {
            int current = 0;
            char[] output = new char[input.length()];
            char[] chars = input.toCharArray();
    
            int begin;
            int end = chars.length;
            for (int i = chars.length - 1; i >= 0; i--) {
                if (chars[i] == ' ') {
                    begin = i + 1;
                    while (begin < end) {
                        output[current++] = chars[begin++];
                    }
                    output[current++] = ' ';
                    end = i;
                }
            }
    
            begin = 0;
            while (begin < end) {
                output[current++] = chars[begin++];
            }
    
            return String.valueOf(output);
        }
  • 相关阅读:
    @controller和@restController注解详解
    customer.sql
    jsp自定义标签
    git常用命令
    dubbo问题
    idea maven项目的移除添加
    bean type not found
    利率配置修改时选中下拉框时,加alert选中,否则不选中
    Vmware文件类型
    抖音平台分析
  • 原文地址:https://www.cnblogs.com/lzrabbit/p/3819078.html
Copyright © 2020-2023  润新知