NC103 反转字符串
描述
写出一个程序,接受一个字符串,然后输出该字符串反转后的字符串。(字符串长度不超过1000)
数据范围: $0 \le n \le 10000≤n≤1000$
要求:空间复杂度 $O(n)$,时间复杂度 $O(n)$
示例1
示例2
关联企业
百度
微盟
携程
腾讯
关联职位
测试
研发
前端
算法
我的题解
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| import java.util.*;
public class Solution {
public String solve (String str) { StringBuilder sb=new StringBuilder(str.length()); for(int i=str.length()-1;i>=0;i--){ sb.append(str.charAt(i)); } return sb.toString(); } }
|
1 2 3 4 5 6 7 8 9
| char[] arr=str.toCharArray(); char temp; for(int i=0;i<arr.length/2;i++){ temp=arr[i]; arr[i]=arr[arr.length-1-i]; arr[arr.length-1-i]=temp; } return new String(arr);
|
1 2 3 4 5 6 7 8 9 10 11
|
char[] arr=str.toCharArray(); for(int i=0;i<arr.length/2;i++){ arr[i]^=arr[arr.length-1-i]; arr[arr.length-1-i]^=arr[i]; arr[i]^=arr[arr.length-1-i]; } return new String(arr);
|
1 2 3 4 5 6 7 8
| char[] arr=str.toCharArray(); for(int i=0;i<arr.length/2;i++){ arr[i]^=arr[arr.length-1-i]; arr[arr.length-1-i]^=arr[i]; arr[i]^=arr[arr.length-1-i]; } return String.valueOf(arr);
|
1 2 3 4
| StringBuilder sb=new StringBuilder(str.length()); sb.append(str); return sb.reverse().toString();
|
方式5:库函数实现2:
1
| return new StringBuilder(str).reverse().toString();
|
官方 精华题解
视频
https://www.nowcoder.com/practice/c3a6afee325e472386a1c4eb1ef987f3?tab=note
<video src=’https://uploadfiles.nowcoder.com/files/20210122/993000_1611283786722/nc103%E5%8F%8D%E8%BD%AC%E5%AD%97%E7%AC%A6%E4%B8%B2.mp4' type=’video/mp4’controls=’controls’ preload=”auto” width=’100%’ height=’100%’>
文字题解
解法一:
开辟一个和str长度大小相同的一个字符串ans,把传入的str倒序赋值到ans字符串上, 时间复杂度$O(n)$,额外空间复杂度$O(n)$。
1 2 3 4 5 6 7 8 9 10 11 12
| import java.util.*; public class Solution { public String solve (String str) { char[] ans = str.toCharArray(); int len = str.length(); for(int i = 0 ; i < len ;i++) { ans[i] = str.charAt(len-1-i); } return new String(ans); } }
|
解法二:
原地交换,,注意:交换进行的次数是次
时间复杂度,额外空间复杂度
1 2 3 4 5 6 7 8 9 10 11 12 13
| import java.util.*; public class Solution { public String solve (String str) { char[] cstr = str.toCharArray(); int len = str.length(); for(int i = 0 ;i < len/2 ;i++){ char t = cstr[i]; cstr[i] = cstr[len-1-i]; cstr[len-1-i]=t; } return new String(cstr); } }
|
解法三:
直接调用库函数
1 2 3 4 5 6 7
| import java.util.*; public class Solution { public String solve (String str) { StringBuffer sb =new StringBuffer(str); return sb.reverse().toString(); } }
|