今天早上面试淘宝,主要考察了两个算法。这个是第二个:逆置一个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;
}
唉 可惜 淘宝一面就挂掉了。
分享到:
相关推荐
输入一串字符,将其逆置输出。输入一串字符,将其逆置输出。输入一串字符,将其逆置输出。
输出文件只有一行,包含一个串,为要求的输出结果。行末要输出一个回车符。 【输入样例】 helloworld llowor 【输出样例】 herowollld 【时间限制】 1s 【空间限制】 65536KB
这个代码用于单词逆置,例如:who you are 逆置玩之后的字符串为:ohw uoy era
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 ; ...
此外,`Contains()`方法可以用来检查一个字符串是否包含另一个字符串。 ### 五、大小写转换 `ToUpper()`和`ToLower()`方法用于将字符串转换为全大写或全小写。这对于文本比较或标准化输入数据非常有帮助。 ### 六...
在本资料包中,重点是学习如何将一个字符串逆置,这是一个常见的编程题练习,旨在帮助考生熟悉指针操作和字符串处理函数。 首先,我们要了解C语言中处理字符串的基本方法。`char`类型变量可以用来存储单个字符,而...
输入两个串,一个串是另一个串的字串,逆置主串中的子串,输出
包括汉字字符的字符串逆置,用结构体模拟unicode存储字符
196 字符串逆置 C语言源代码文件
编制程序实现字符串的逆转功能。要求具有友好的输入、输出界面。如输入This is a test 输出 tset a si sihT
- KMP算法(Knuth-Morris-Pratt algorithm)通常用于在一个字符串(主串)中寻找另一个字符串(模式串)的出现情况,避免不必要的回溯。在这里,KMP被用来寻找字符串的回文子串。我们把原字符串反转,然后用KMP算法...
数据结构,串的操作 链式存储 逆置子串 ***题目3: 若S和T是用结点大小为1的单链表存储的两个串,设计算法将S中首次与T匹配的子串逆置。
字符串倒置是C语言字符串处理中的一个经典问题,其核心思想是将一个给定的字符串中的字符顺序颠倒。在C语言中,由于字符串是以字符数组的形式存在的,我们通常可以通过交换数组两端的字符来实现倒置,直到达到数组...
输出文件只有一行,包含一个串,为要求的输出结果。行末要输出一个回车符。 【输入样例】 helloworld llowor 【输出样例】 herowollld 【时间限制】 1s 【空间限制】 65536KB ...
线性表的就地逆置 线性表是数据结构中最基本的结构之一,线性表的就地逆置是指在不使用额外空间的情况下,将线性表中的元素逆置。...线性表的就地逆置是一个非常重要的算法,它可以在实际应用中发挥重要作用。
1. DES 加密算法:DES 加密算法是一种对称加密算法,使用同一个密钥进行加密和解密。它使用 64 位块加密,使用 56 位密钥。 2. C++ 实现:该实现使用 C++ 语言,提供了 DES 加密算法的实现,包括加密、解密、设置...
`reverse`函数接收一个指向字符串的指针,以及两个整数参数,分别代表要逆置部分的起始和结束位置。函数通过交换这两个位置之间的字符来达到逆置的效果。在`main`函数中,我们先让用户输入一个字符串,然后利用`...