GoLang 字串變位詞

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

目標

寫出一個函數 anagram(s, t) 去判斷兩個字串是否是顛倒字母順序構成的。

  • GoLang 實現
func solution(s , t string)bool{    if s == t {        return true    }    length := len(s)    if  length != len(t) {        return false    }    //' ' 32  --> ~ 126    const MAX_ASCII int= 94    const SPACE_INDEX rune = 32    numbers := [MAX_ASCII]int{}    sRune := []rune(s)    tRune :=[]rune(t)    for i := 0 ; i < length ; i++ {        index := tRune[i] - SPACE_INDEX        numbers[index]++        index = sRune[i] - SPACE_INDEX        numbers[index]--    }    for i := 0 ; i < MAX_ASCII / 2 ; i++{        mergeSize :=  numbers[i]        if mergeSize != 0 || mergeSize != numbers[MAX_ASCII - 1 - i]{            return false        }    }    return true}

其中關鍵點1 :

  • 定義儲存最後判斷兩個字串是否相同的 長度的取值:

    根據ASCII 表可以知道:
    第一個單字元 ' ' 的10 進位值位32 , 最後一個單字元 '~' 10進位值位 126 , 得到之間的差值為 94 ,
    這裡預測每個字元都被使用到了, 所以長度直接定義為 94了.

  • Java 實現 和上面類似:
public boolean anagram(String s, String t) {        if (s == null || t == null || s.length() ==0 || s.length() != t.length()){            return false;        }        if (s.equals(t))return true;        final int MAX_ASCII = 94;        final char SPACE_INDEX = ' ';        int[] numbers = new int[MAX_ASCII];        int length = s.length();        char[] sCharArray = s.toCharArray();        char[] tCharArray = t.toCharArray();        for(int i = 0 ; i< length ; i++){            int index = sCharArray[i] - SPACE_INDEX;            numbers[index]++;            index = tCharArray[i] - SPACE_INDEX;            numbers[index]--;        }        for (int i =0 ; i < MAX_ASCII / 2 ; i++ ) {            int mergeSize = numbers[i];            if ( mergeSize != 0 || mergeSize != numbers[MAX_ASCII - 1 - i]){                return false;            }        }        return true;    }

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.