`
shuofenglxy
  • 浏览: 195286 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

左右手法则的典型应用---字符串逆序

 
阅读更多

问题:输入 I am a boy 输出boy a am I 
要求:o(1)额外空间 o(n)时间复杂度
分析:最典型的左右手法则用法,只要两次简单的字符串逆序就可以。只是要注意思维上应该再深一点点,你就一定能得到答案。
见下代码:

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class reverseString {

    public static void main(String[] args){
        BufferedReader bf= new BufferedReader(new InputStreamReader(System.in));
        char[] stringDemo = null;
        try {
            stringDemo = bf.readLine().toCharArray();
            System.out.println(stringDemo);
        
        } catch (IOException e) {
            
            e.printStackTrace();
        }
        reverseString(stringDemo,0,stringDemo.length);
        //看第一逆序效果
        System.out.println(stringDemo);

        int tag=0;
        for(int i=0;i<stringDemo.length;i++){
            if(stringDemo[i]==' '){
                reverseString(stringDemo,tag,i);
                tag = i+1;
            }
        }
        //逆序后最终结果
        System.out.println(stringDemo);
    }
    //字符串首位交换即可
    public static char[] reverseString(char[] inputString,int i,int len){
        char temp;
        while(i<len/2){
            temp = inputString[i];
            inputString[i] = inputString[len-i-1];
            inputString[len-i-1] = temp;
            i++;
        }
        return inputString;
    }
}
 
分享到:
评论
2 楼 shuofenglxy 2011-03-02  
酒杯中的大海 写道
lz的reverseString函数不是很严谨。
我的答案:
public static char[] reverseString(char[] inputString){ 
int len = 0;  //o(1)空间
while(len<inputString.length/2){ 
inputString[len] = (char)(inputString[inputString.length-len-1] ^ inputString[len]); 
inputString[inputString.length-len-1] = (char)(inputString[inputString.length-len-1] ^ inputString[len]);
inputString[len] = (char)(inputString[inputString.length-len-1] ^ inputString[len]);
len++; 

return inputString; 
}


挺好的,赞一下。我对O(1)的认识是常量空间,所以变量啊什么的乱用  哈哈。不过你的答案可是要验证啊,我没有验证你的
1 楼 酒杯中的大海 2011-03-02  
lz的reverseString函数不是很严谨。
我的答案:
public static char[] reverseString(char[] inputString){ 
int len = 0;  //o(1)空间
while(len<inputString.length/2){ 
inputString[len] = (char)(inputString[inputString.length-len-1] ^ inputString[len]); 
inputString[inputString.length-len-1] = (char)(inputString[inputString.length-len-1] ^ inputString[len]);
inputString[len] = (char)(inputString[inputString.length-len-1] ^ inputString[len]);
len++; 

return inputString; 
}

相关推荐

    字符串逆序 - 字符串逆序算法

    字符串逆序

    字符串逆序+c语言字符串逆序输出+c语言字符串逆序逐行解释

    字符串逆序+c语言字符串逆序输出+c语言字符串逆序逐行解释字符串逆序+c语言字符串逆序输出+c语言字符串逆序逐行解释字符串逆序+c语言字符串逆序输出+c语言字符串逆序逐行解释字符串逆序+c语言字符串逆序输出+c语言...

    PTA 6-13 函数实现字符串逆序

    在编程领域,字符串逆序是一种常见的操作,尤其在数据结构和算法的学习中。PTA(Programming Training Arena)是一个在线编程训练平台,它提供了各种练习题目来帮助学生提升编程技能。题目"PTA 6-13 函数实现字符串...

    c 语言字符串逆序 c 语言字符串逆序

    c 语言字符串逆序 c 语言字符串逆序c 语言字符串逆序 c 语言字符串逆序c 语言字符串逆序 c 语言字符串逆序c 语言字符串逆序 c 语言字符串逆序c 语言字符串逆序 c 语言字符串逆序c 语言字符串逆序 c 语言字符串逆序c ...

    字符串逆序字符串逆序字符串逆序字符串逆序.txt

    字符串逆序字符串逆序字符串逆序字符串逆序字符串逆序字符串逆序

    字符串逆序-使用C#实现的字符串逆序.zip

    在这个“字符串逆序-使用C#实现的字符串逆序.zip”压缩包中,很可能包含了一个或多个C#源代码文件,用于演示如何在C#环境中进行字符串逆序的操作。下面,我们将深入探讨C#中字符串逆序的几种常见方法。 首先,C#中...

    c语言字符串逆序输出+c语言字符串逆序逐行解释

    c语言字符串逆序输出c语言字符串逆序输出+c语言字符串逆序逐行解释c语言字符串逆序输出+c语言字符串逆序逐行解释c语言字符串逆序输出+c语言字符串逆序逐行解释c语言字符串逆序输出+c语言字符串逆序逐行解释c语言字符...

    字符串逆序-使用Java实现的字符串按单词逆序.zip

    这个功能涉及到对字符串的解析、分割以及重新组合,是字符串操作的一个典型实例。 首先,让我们理解什么是字符串逆序。在一般情况下,字符串逆序是指将一个字符串中的字符顺序颠倒过来。例如,"Hello World"逆序后...

    字符串逆序-使用C语言实现的字符串按单词逆序.zip

    在编程领域,字符串逆序是一种常见的操作,尤其在C语言中,由于其底层特性,处理字符串需要更加细致。本主题将深入探讨如何使用C语言来实现一个字符串逆序的程序,特别是按照单词进行逆序,这在处理文本数据时非常...

    字符串逆序-使用C语言+递归实现字符串逆序.zip

    3. 在递归调用中,先将递归函数应用于字符串的剩余部分(长度减1),得到逆序的剩余部分。 4. 将原始字符串的第一个字符与逆序的剩余部分拼接起来,这可以通过在逆序部分的末尾添加第一个字符实现。 以下是一个简单...

    7-3 字符串逆序.py

    7-3 字符串逆序.py

    什么是字符串逆序以及学习字符串逆序的意义是什么

    - 在实际开发中,字符串逆序的应用非常广泛。 - 比如在处理用户输入时,有时需要将输入的字符串倒序显示或存储。 - 掌握字符串逆序不仅能够提高代码的灵活性和可维护性,还能帮助程序员更好地应对不同场景下的...

    递归实现字符串逆序

    逆序字符串是一个常见的编程问题,在多种场景下都有应用,例如文本处理、算法设计等。通过递归方法解决此问题不仅能加深对递归的理解,还能提高解决问题的能力。 #### 递归基础知识 递归是一种函数调用自身的编程...

    字符串处理-使用Python逆序输出字符串.zip

    总的来说,Python的字符串逆序输出是编程中的一项基本技巧,无论是在游戏开发、网络爬虫还是数据分析中都有其实际应用场景。理解并熟练掌握这种技巧,能够提升我们的编程效率,更好地应对各种编程挑战。

    腾讯在线笔试题-字符串反转,以及把整个字符串逆序

    总结来说,字符串的反转和逆序处理是程序设计中的基础问题,涉及指针操作、字符串处理函数的应用以及对边界情况的处理。掌握这些基本概念和方法将有助于解决编程中遇到的类似问题,并提升编程能力。

    C 语言 指针实现字符串的逆序调序输出

    逆序输出字符串是指将字符串中的字符顺序反转,例如原字符串"hello"逆序后变为"olleh"。在C语言中,我们可以用指针来达到这一目的。首先,定义一个指向字符串首字符的指针,然后逐渐向字符串末尾移动,逐个输出字符...

    字符串逆序输出算法

    标题中的“字符串逆序输出算法”是指一种计算机编程技术,主要目标是将输入的字符串按照相反的顺序打印出来。在C++中,这通常通过递归或者栈等数据结构来实现。描述中提到的“算法精巧”,可能指的是用较少的代码...

    c++ 字符串逆序输出

    c++ 字符串逆序输出 用vs2005打开

    字符串逆序算法示例 VC CUI程序

    在编程领域,字符串逆序是一种常见的操作,尤其在C++编程中,我们经常需要实现这样的功能。本示例是基于VC++(Visual C++)的命令行界面(CUI)程序,它展示了如何通过C++语言来实现字符串的逆序。下面我们将详细...

    1162:字符串逆序.cpp

    1162:字符串逆序 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 31557 通过数: 20735 【题目描述】 输入一串以‘!’结束的字符,按逆序输出。 【输入】 如题述。 【输出】 如题述。 【输入样例】 abc! 【输出...

Global site tag (gtag.js) - Google Analytics