请实现一个函数,将一个字符串s中的每个空格替换成“%20”。
例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
数据范围:。保证字符串中的字符为大写英文字母、小写英文字母和空格中的一种。
import java.util.*; public class Solution { public String replaceSpace (String s) { //如果本来就是空字符串那我们返回就好。 if(s==null || s.length()==0) return s; //使用StringBuilder在遍历过程中构建新的字符串。 StringBuilder builder = new StringBuilder(); char blank = ' '; for(int i=0;i<s.length();i++){ if(s.charAt(i)!=blank) builder.append(s.charAt(i)); else builder.append("%20"); } return builder.toString(); } }
public string replaceSpace (string s) { return s.Replace(" ","%20"); }
string replaceSpace(string s) { // write code here string a; for(auto& ch:s) { if(ch==' ') a.append("%20"); else a+=ch; } return a; }
class Solution { public: string replaceSpace(string s) { string res; for(int i=0;i<s.size();i++) { if(s[i]!=' ') res+=s[i]; else res+="%20"; } return res; } };当然,有时候熟悉应用C++ stl也是一个不错的选择(狗头)
for(int i=0;i<s.size();i++) { if(s[i]==' ') s.replace(i, 1, "%20");//从i位置开始的1个字符替换为%20 } return s;
char* replaceSpace(char* s ) { // write code here char* ret_char = (char *)malloc(strlen(s)*3); int index = 0; for(int i = 0; i < strlen(s); i++) { if(s[i]==' ') { ret_char[index++] = '%'; ret_char[index++] = '2'; ret_char[index++] = '0'; } else { ret_char[index++] = s[i]; } } return ret_char; }
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param s string字符串 * @return string字符串 */ public String replaceSpace (String s) { if (s == null || s.length() == 0) return ""; int spaceNum = 0; int m = s.length(); for (int i = 0; i < m; i++) { char c = s.charAt(i); if (c == ' ') spaceNum++; } //p1指向原字符串末尾 int p1 = m - 1; //p2指向替换之后字符串的末尾,spaceNum为空格数,3是"%20"的长度 int p2 = p1 + spaceNum * 2; char[] tmp = new char[p2+1]; for (int i = 0; i < s.length(); i++) tmp[i] = s.charAt(i); //当p1和p2指向同一位置时,说明已经替换完毕 while (p1 >= 0 && p1 != p2) { if (tmp[p1] == ' ') { tmp[p2--] = '0'; tmp[p2--] = '2'; tmp[p2--] = '%'; }else { tmp[p2--] = tmp[p1]; } p1--; } return new String(tmp); } }
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param s string字符串 * @return string字符串 */ string replaceSpace(string s) { // write code here int cnt = 0;//统计空格数 int len = s.length(); for(int i=0;i<len;i++){ if(s[i] == ' ') cnt++; } s.resize(len+cnt*2); int i = len - 1;//指向原字符串最后一个字符 int j = s.length()-1;//指向空格替换成%20后的字符串最后一个字符 for(;i!=j;i--){ //从尾到头替换空格,当i==j时空格替换完毕,无需继续 if(s[i]==' '){ s[j] = '0'; s[j-1] = '2'; s[j-2] = '%'; j -=3; } else{ s[j] = s[i]; j--; } } return s; } };
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param s string字符串 * @return string字符串 */ string replaceSpace(string s) { // write code here int n = s.length(); string s1[n]; string s2; for (int i = 0; i < n; i++) { s1[i] = s[i]; } for (int i = 0; i < n; i++) { if (s1[i] == " ") { s1[i] = "%20"; } } for (int i = 0; i < n; i++) { s2 = s2 + s1[i]; } return s2; } };
public class Solution { // 拼接法 // 时间复杂度: O(n) // 空间复杂度: O(n) public String replaceSpace(String s) { if (s == null || s.isEmpty()) { return ""; } char ch; StringBuilder sb = new StringBuilder(s.length() * 3); for (int i = 0, n = s.length(); i < n; i++) { ch = s.charAt(i); if (ch == ' ') { sb.append("%20"); } else { sb.append(ch); } } return sb.toString(); } }
public class Solution { // 双指针法 // 时间复杂度: O(n) // 空间复杂度: O(1) public String replaceSpace(StringBuilder s) { if (s == null) { return ""; } // 计算空格个数 int cnt = 0; for (int i = 0, n = s.length(); i < n; i++) { if (s.charAt(i) == ' ') { cnt++; } } // 确保容量足够 int oldLength = s.length(); int newLength = s.length() + cnt * 2; s.setLength(newLength); // 从后往前遍历 char ch; int i = oldLength - 1, j = newLength - 1; while (i >= 0) { ch = s.charAt(i); if (ch == ' ') { s.setCharAt(j, '0'); s.setCharAt(j - 1, '2'); s.setCharAt(j - 2, '%'); j = j - 3; } else { s.setCharAt(j, ch); j--; } i--; } // 返回结果 return s.toString(); } }
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param s string字符串 * @return string字符串 */ public String replaceSpace (String s) { // write code here StringBuilder sb = new StringBuilder(); char[] chars = s.toCharArray(); for (int i = 0;i < chars.length; i++) { if (' ' == chars[i]) { sb.append("%20"); } else { sb.append(chars[i]); } } return sb.toString(); } }