日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java变位词_GoLang 字符串变位词

發布時間:2024/9/27 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java变位词_GoLang 字符串变位词 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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;

}

歡迎加入學習交流群569772982,大家一起學習交流。

總結

以上是生活随笔為你收集整理的java变位词_GoLang 字符串变位词的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。