字符串的题目感觉比较枯燥,解法也没有很多
38.外观数列
递归,注意边界值
class Solution {
public String countAndSay(int n) {
String a=new String("11");
if(n==1)
a="1";
else
for(int i=2;i<n;i++)
{ a=last(a); }
return a;
String last(String a) {
String b=new String();
int len=a.length(),i=1,count=1;
while(i<len) {
if(a.charAt(i-1)==a.charAt(i))
count++;
else {
b+=count+"";
b+=a.charAt(i-1);
count=1; }
i++; }
b+=count+"";
b+=a.charAt(i-1);
return b; }}
344.反转字符串
打着字符串旗号的数组题…
class Solution { public void reverseString(char[] s) { char temp;int i=0,j=s.length-1; while(i<j) { temp=s[i]; s[i]=s[j]; s[j]=temp; i++; j--; } }}
13.罗马数字转整数
这题有点意思,不过还好是罗马转整数,反过来会更麻烦。
class Solution {
int change(char a)
{
int back=0;
switch (a)
{case 'I':
back=1;break;
case 'V':
back=5;break;
case 'X':
back=10;break;
case 'L':
back=50;break;
case 'C':
back=100;break;
case 'D':
back=500;break;
case 'M':
back=1000;break;}
return back;
}
public int romanToInt(String s) {
int len=s.length();int total=0;
for(int i=0;i<len-1;i++)
{
if(change(s.charAt(i))<change(s.charAt(i+1)))
{
total-=change(s.charAt(i));
}
else total+=change(s.charAt(i));
}
total+=change(s.charAt(len-1));
return total;
}
}