演算法題(一) 字串

2021-09-25 17:09:36 字數 3817 閱讀 3897

public static string submax(string strarr ) else 

if (max < k) }}

system.out.println(max);

return arrays.copyofrange(strarr,start,end + 1);

}

/**

* 給定兩個字串str1,str2。如果兩者字元種類和相應出現次數一致,則稱為變形詞。請實現函式來判斷兩個字串是否為變形詞。

* * @author sunyiran

* @createtime 2019-07-31 10:12

*/public class test1

/* 利用hashmap(假定限制了字元範圍,那麼採用陣列來記錄更好)來判斷字元是否重複出現,且次數一致。

* 針對str1,字元作為key,出現次數作為v,出現一次+1;

* 針對str2,字元作為key,出現次數作為v,出現一次-1;

*/hashmapmap = new hashmap<>();

for (int i = 0; i < str1.length() ; i++) else

if (!map.containskey(c2)) else

}system.out.println(map);

//假定map的值都為0,則代表兩個字串字元種類一致,出現次數一致

return map.values().stream().allmatch(x->x == 0);

}/**

* 判斷字元是否為空

*/private static boolean isempty(string str)

str = str.replaceall("\\s", "");

return str.length() == 0;

}public static void main(string args)

}

/**

* 給定乙個字串,求所有數字串的數字之和,要求:小數點分割的數字,不作為分數,而是兩個數字;單個-為負數,--為正數

* * @author sunyiran

* @createtime 2019-07-31 10:43

*/public class test2

int sum = 0;

//子串值

int num = 0;

//符號

boolean symbol = true;

listresult = new arraylist<>();

for (int i = 0; i < str.length(); i++) else else }}

}//防止最後一位是數字時,未能加上最後乙個數字子串

sum += num;

return sum;

}/**

* 判斷字元是否為空

*/private static boolean isempty(string str)

str = str.replaceall("\\s", "");

return str.length() == 0;

}public static void main(string args)

}

/**

* 去掉字串中連續出現k次指定字元c的子串

* @author sunyiran

* @createtime 2019-07-31 14:09

*/public class test3

int count = 0;

stringbuilder sb = new stringbuilder();

for (int i = 0; i < str.length() ; i++) else

count = 0;}}

if (count != k)

return sb.tostring();

}/**

* 判斷字元是否為空

*/private static boolean isempty(string str)

str = str.replaceall("\\s", "");

return str.length() == 0;

}public static void main(string args)

}

/**

* 判斷兩個字串是否為旋轉詞,即字串str1為字串str2一部分子串放在最後面,如abed與edab

* @author sunyiran

* @createtime 2019-07-31 15:01

*/public class test4

for (int i = 0; i < str1.length() ; i++) }}

return false;

}/**

* 判斷字元是否為空

*/private static boolean isempty(string str)

str = str.replaceall("\\s", "");

return str.length() == 0;

}public static void main(string args)

}

package com.syr.test;

/** * 替換字串中連續出現的指定字串

* 比如給出字串adc123,目標子字串abc,更換為新字串x,則結果為x123,要求重複的子字串只替換一次

* * @author sunyiran

*/public class test5

public static string replacetargetstr(string str, string from, string to)

//標記是否已經替換過

boolean flag = false;

//單次比較所需長度

int len = from.length();

stringbuilder sb = new stringbuilder();

for (int i = 0; i < str.length(); ) else

i += len;}}

}return sb.tostring();

}public static void main(string args)

}

/**

* 給定乙個字串str,返回str的統計字串

* 比如,「aaabbadddffc」的統計字串為「a_3_b_2_a_1_d_3_f_2_c_1」

* * @author sunyiran

* @createtime 2019-10-15 22:18

*/public class test6

private static string countstr(string str)

char chars = str.tochararray();

stringbuilder sb = new stringbuilder();

int len = 0;

for (int i = 0; i < chars.length ; i++)

if (chars[i] != chars[i +1])

}return sb.tostring();

}public static void main(string args)

}

字串(一) 字串Hash

今天開一手最不 tao 擅 yan 長的字串演算法 字串hash演算法。似乎提到字串的話,kmp應該是更為常見的一種,但是hash有它的優點,被犇們稱為 優雅的暴力 何謂hash?hash的中文稱為雜湊,這當然是音譯,直譯過來就是雜湊,或者也有叫預對映的。雜湊的作用就是通過某個特殊函式的對映,將任意...

PAT刷題(一 字串處理)

大學期間專案做了不少,而在演算法題方面還是個小白。藉著考研機會,把pat甲級刷一遍,同時記錄一下心得。主要參考的是柳神的題解,略過了不會考或考的可能性很小的題。如果做法和題解不大一樣,就貼一下自己的 挺簡單的 畢竟第一題 熟悉了一下to string 的用法。原題鏈結 題解自己的做法複雜了 通過取餘...

第一字串 Trie Topology

bessie最近在玩字串。她發現通過改變字母的順序可以使一些字串排在其他所有的字串之前 按字典序從小到大排序 比如說,bessie找到了對於字串 omm moo mom 和 ommnom 她可以用標準的字母表把 mom 排在最前面,也可以用字母表 abcdefghijklonmpqrstuvwxyz...