题目描述
接受一个只包含小写字母的字符串,然后输出该字符串反转后的字符串。(字符串长度不超过1000) 题目来源
输入描述
输入一行,即一个只包含小写字母的字符串。
输出描述
输出该字符串反转后的字符串。
示例
输入:abcd
输出:dcba
复制代码
思路
三种思路:
思路一:
利用递归(测试过可以正常输出,因为节省审核时长没有贴图)
static String reverse(String word){
//调用递归函数,第二个参数代表要反转的字符串最后一个的下标值
return reversetext(word,word.length()-1);
}
static String reversetext(String word,int index){
//当index表示到字符串第一个字符时,停止递归,并把第一个字符加上去;
if (index == 0 )return word.charAt(0)+"";
String ans = "";
//从最后一个字符开始加
ans += word.charAt(index) + reversetext(word,index-1);
return ans;
}
思路二:
利用Java里面自带的reverse()函数,408里面不让用java,应该也不让用自带的库函数
(测试过可以正常输出,因为节省审核时长没有贴图)
static String reverse2(String word){
// String类转为StringBuffer类
StringBuffer sb = new StringBuffer(word);
//调用StringBuffer类里的reverse()函数,但是此时他仍然是StringBuffer类,
//需要再调用toString()的方法,才能返回String()类型
return sb.reverse().toString();
}
思路三:
利用一个辅助字符数组,把字符串拆成数组,再把数组从尾到头拼接起来。
(测试过可以正常输出,因为节省审核时长没有贴图)
static String reverse3(String word){
//利用字符数组存储字符串里的每个字符
char temp[] = word.toCharArray();
String ans = "";
//利用字符数组,从尾到头进行拼接,成一个新的字符串;
for (int i = word.length()-1;i >= 0; i--){
ans += temp[i];
}
return ans;
}
时间复杂度:
遍历了一遍字符串
O(n)
空间复杂度:
O(n),利用了辅助数组;