`

[淘宝]逆置一个字符串

阅读更多

今天早上面试淘宝,主要考察了两个算法。这个是第二个:逆置一个String类型的字符串。

 我想了两个思路:

(1) 创建一个临时字符串temp, 循环temp += str.charAt(leng--);

public String reverse(String str) {
	String temp = "";
	int length = str.length();
	for(int i=length-1;i > 0; i--) {
		temp += str.charAt(i);
	}
	return temp;
		
}

 

(2) 先将整个字符串打散成字符数组,然后第一个跟最后一个交换,第二个跟倒数第二个字符串交换。以此类推。最后将整个字符数组合成一个字符串即可。

[代码略]

 

 后来回来在网上看了人家的一些方法,发现StringBuffer里面就有一个reverse()方法。赶紧去看看,后来发现,他的思路跟我的第二个想法差不多嘛。不过人家考虑的东西更加全面,即将DBCS也考虑了进去。

 

     public AbstractStringBuilder reverse() {
	boolean hasSurrogate = false;
	int n = count - 1;
	for (int j = (n-1) >> 1; j >= 0; --j) {
	    char temp = value[j];
	    char temp2 = value[n - j];
	    if (!hasSurrogate) {
		hasSurrogate = (temp >= Character.MIN_SURROGATE && temp <= Character.MAX_SURROGATE)
		    || (temp2 >= Character.MIN_SURROGATE && temp2 <= Character.MAX_SURROGATE);
	    }
	    value[j] = temp2;
	    value[n - j] = temp;
	}
	if (hasSurrogate) {
	    // Reverse back all valid surrogate pairs
	    for (int i = 0; i < count - 1; i++) {
		char c2 = value[i];
		if (Character.isLowSurrogate(c2)) {
		    char c1 = value[i + 1];
		    if (Character.isHighSurrogate(c1)) {
			value[i++] = c1;
			value[i] = c2;
		    }
		}
	    }
	}
	return this;
    }

 

 

唉 可惜 淘宝一面就挂掉了。

分享到:
评论

相关推荐

    C语言 字符串逆置:输入一串字符,将其逆置输出

    输入一串字符,将其逆置输出。输入一串字符,将其逆置输出。输入一串字符,将其逆置输出。

    将字符串中子串逆置

    输出文件只有一行,包含一个串,为要求的输出结果。行末要输出一个回车符。 【输入样例】 helloworld llowor 【输出样例】 herowollld 【时间限制】 1s 【空间限制】 65536KB

    字符串中单词逆置

    这个代码用于单词逆置,例如:who you are 逆置玩之后的字符串为:ohw uoy era

    C语言实现逆置字符串

    C语言实现如何逆置字符串

    把字符串中的内容逆置

    /*////////////////////////////////////////////////////... * 把字符串中的内容逆置。 * 例如,原字符串中内容为hello,处理后字符串中内容为olleh * */////////////////////////////////////////////////////////

    字符串转置,字符串的逆置

    字符串转置,字符串的逆置

    字符串排序和链表逆置算法

    // 定义一个二维字符数组存储字符串 int i, j, n; // i和j用于循环控制,n表示输入的字符串数量 // 输入n个字符串 for(i = 0; i ; i++) scanf("%s", str[i]); // 冒泡排序 for(i = 0; i ; i++) for(j = 0; j ; ...

    C#_处理字符串方法总结.doc

    此外,`Contains()`方法可以用来检查一个字符串是否包含另一个字符串。 ### 五、大小写转换 `ToUpper()`和`ToLower()`方法用于将字符串转换为全大写或全小写。这对于文本比较或标准化输入数据非常有帮助。 ### 六...

    计算机二级c语言资料-计算机二级c语言编程练习题之把字符串逆置.zip

    在本资料包中,重点是学习如何将一个字符串逆置,这是一个常见的编程题练习,旨在帮助考生熟悉指针操作和字符串处理函数。 首先,我们要了解C语言中处理字符串的基本方法。`char`类型变量可以用来存储单个字符,而...

    将一个串中的部分字符逆置

    输入两个串,一个串是另一个串的字串,逆置主串中的子串,输出

    hoj10240(包括汉字字符的字符串逆置)

    包括汉字字符的字符串逆置,用结构体模拟unicode存储字符

    196 字符串逆置 C语言源代码文件

    196 字符串逆置 C语言源代码文件

    编制程序实现字符串的逆转功能。要求具有友好的输入、输出界面。如输入This is a test 输出 tset a si sihT

    编制程序实现字符串的逆转功能。要求具有友好的输入、输出界面。如输入This is a test 输出 tset a si sihT

    RE_字符串1

    - KMP算法(Knuth-Morris-Pratt algorithm)通常用于在一个字符串(主串)中寻找另一个字符串(模式串)的出现情况,避免不必要的回溯。在这里,KMP被用来寻找字符串的回文子串。我们把原字符串反转,然后用KMP算法...

    数据结构 串的操作 链式存储 逆置子串

    数据结构,串的操作 链式存储 逆置子串 ***题目3: 若S和T是用结点大小为1的单链表存储的两个串,设计算法将S中首次与T匹配的子串逆置。

    test_question_C.rar_字符串

    字符串倒置是C语言字符串处理中的一个经典问题,其核心思想是将一个给定的字符串中的字符顺序颠倒。在C语言中,由于字符串是以字符数组的形式存在的,我们通常可以通过交换数组两端的字符来实现倒置,直到达到数组...

    找到子串,并逆置

    输出文件只有一行,包含一个串,为要求的输出结果。行末要输出一个回车符。 【输入样例】 helloworld llowor 【输出样例】 herowollld 【时间限制】 1s 【空间限制】 65536KB ...

    线性表的就地逆置

    线性表的就地逆置 线性表是数据结构中最基本的结构之一,线性表的就地逆置是指在不使用额外空间的情况下,将线性表中的元素逆置。...线性表的就地逆置是一个非常重要的算法,它可以在实际应用中发挥重要作用。

    des c++实现字符串加密

    1. DES 加密算法:DES 加密算法是一种对称加密算法,使用同一个密钥进行加密和解密。它使用 64 位块加密,使用 56 位密钥。 2. C++ 实现:该实现使用 C++ 语言,提供了 DES 加密算法的实现,包括加密、解密、设置...

    部分逆置 pta c语言 两种示例

    `reverse`函数接收一个指向字符串的指针,以及两个整数参数,分别代表要逆置部分的起始和结束位置。函数通过交换这两个位置之间的字符来达到逆置的效果。在`main`函数中,我们先让用户输入一个字符串,然后利用`...

Global site tag (gtag.js) - Google Analytics