劍指offer第四天之替換空格
請實現一個函數,將一個字符串中的每個空格替換成“%20”。例如,當字符串爲We Are Happy.則經過替換之後的字符串爲We%20Are%20Happy。
java字符數組char[]和字符串String之間的轉換
使用String.valueOf()將字符數組轉換成字符串
void (){
char[] s={'A','G','C','T'};
String st=String.valueOf(s);
System.out.println("This is : "+st);
}
使用.toCharArray()將字符串轉換成字符數組
String st="AGCT";
char[] s=st.toCharArray();
for (int i=0;i<st.length();i++){
System.out.println("This s[i]"+i+s[i]);
}
java:
public static String replaceSpace(StringBuffer str) {
return str.toString().replace(" ", "%20");
}
java最優解法:
public static String replaceSpace(StringBuffer str) {
// return str.toString().replace(" ", "%20");
if(str==null)
return "";
// 字符串總長
int oldlen=str.length();
// 計算空格數量
int kong=0;
for(int i=0;i<oldlen;i++)
{
if(str.charAt(i)==' ')
{
kong++;
}
}
// 新字符串長度
int newlength = oldlen+kong*2;
// 創建字符數組
char[] array = new char[newlength];
int oldIndex = oldlen - 1;
int newIndex = newlength - 1;
// 從後往前挪動
while(oldIndex>=0 && oldlen<=newlength)
{
char c=str.charAt(oldIndex);
if (c==' ')
{
array[newIndex--]='0';
array[newIndex--]='2';
array[newIndex--]='%';
}else{
array[newIndex--]=c;
}
oldIndex--;
}
return String.valueOf(array);
}
java:
public static String replaceSpace(StringBuffer str) {
StringBuffer s = new StringBuffer("");
for(int i=0;i<str.length();i++)
{
if(str.charAt(i)==' ')
{
s.append("%20");
}
else
{
s.append(str.charAt(i));
}
}
return s.toString();
}
python:
# -*- coding:utf-8 -*-
class Solution:
# s 源字符串
def replaceSpace(self, s):
lists=[]
for i in range(len(s)):
if s[i] == ' ':
lists.append("%20")
else:
lists.append(s[i])
return "".join(lists)
# -*- coding:utf-8 -*-
class Solution:
# s 源字符串
def replaceSpace(self, s):
lists = []
for i in range(len(s)-1,-1,-1):
if s[i] == ' ':
lists.insert(0,"%20")
else:
lists.insert(0,s[i])
return "".join(lists)
class Solution:
# s 源字符串
def replaceSpace(self, s):
return "%20".join(s.split(" "))
總結的來說有三種方法,從後往前(最優)最優的是思想,從前往後(中等),取巧的方法需要知道。
c++待續