劍指offer第四天之替換空格

劍指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++待續

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章