文章目录
手机号转base64编码
public static void main(String[] args) {
getBase64 getbase64 = new getBase64();
long i = Long.parseLong("100");
String str = getbase64.telToBase64(i);
System.out.println( str);
}
}
class getBase64{
public String telToBase64(long lng){
String base64[] = {"A","B","C","D","E","F","G","H","I","J","K","L","M","N",
"O","P","Q","R","S","T","U","V","W","X","Y","Z",
"a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p",
"q","r","s","t","u","v","w","x","y","z",
"0","1","2","3","4","5","6","7","8","9","+","/"};
String str = new String();
String res= new String();
int i,j;
i = (int)(lng/64);
j = (int)(lng%64);
res=base64[j];
while(i>0){
j = i%64;
i = i/64;
str = base64[j];
res= str + res;
}
return res;
}
}
输出:Bk
100=64(B)*1+36(k)
字符串找子串
给定m个不重复的字符 [a, b, c, d],以及一个长度为n的字符串tbcacbdata,问能否在这个字符串中找到一个长度为m的连续子串,使得这个子串刚好由上面m个字符组成,顺序无所谓,返回任意满足条件的一个子串的起始位置,未找到返回-1。比如上面这个例子,acbd,3。本题的子串需要满足长度为m,字符不重复,可以使用长为m的滑动窗口遍历字符串,窗口内每个字符都要出现一次,如果符合条件,就返回窗口起始位置。
class Solution {
public int checkInclusion(char[] ch,String s) {
int n = s.length();
int m =ch.length;
if(m>n) return -1;
for(int i=0;i<n-m;i++){
if(checkEqual(ch,s.substring(i,i+m))){
return i;
}
}
return -1;
}
public boolean checkEqual(char[] ch,String s){
for(int i=0;i<ch.length;i++){
if(s.indexOf(ch[i])==-1){
return false;
}
}
return true;
}