字符串全组合
使用位图0代表该字符不出现,1代表该字符出现
public void Combinatin(char[] a)
{
int len=a.length;
int n=0;
if(len<32)
{
n=1<<len;
}
for(int i=0;i<n;i++){
StringBuilder stringBuilder=new StringBuilder();
for(int j=0;j<len;j++)
{
if((i&(1<<j))!=0)
{
stringBuilder.append(a[j]);
}
}
System.out.println(stringBuilder.toString());
}
}
整数二进制表示形式中含有1的个数
利用n&(n-1)将右边第一个1变成0来做
public int count1bit(int n)
{
int count=0;
while (n!=0)
{
n&=(n-1);
count++;
}
return count;
}
字符转整型
//从低位开始遍历
public int charToInt(char[] a)
{
int result=0;
for(int i=a.length-1;i>=0;i--)
{
int c=a[i]-'0';
result= (int) (result+c*Math.pow(10,(a.length-i-1)));
}
return result;
}
//从高位开始遍历
public int charToInt1(char[] a)
{
int result=0;
for (int i=0;i<a.length-1;i++)
{
int c=a[i]-'0';
result=result*10+c;
}
return result;
}
判断是否是回文串
//思想是用两个指针从头和尾扫描进行判断
public boolean isPalindrome(char[] a)
{
int pre=0;
int tail=a.length-1;
while (pre<tail)
{
if(a[pre]!=a[tail])
{
return false;
}
pre++;
tail--;
}
return true;
}