试了很多次 ,但是好多都失败了,有些可能思路不对,有些可能内存爆了,运行时间超时。
我是基于这么一个思路,如果两个字符串str1,str2拼接在一起,那么怎么算产生的结果呢,应该是str1的数量*str2的数量 + str1.substring(0,str1.length-1)的数量 * str2.substring(1,str2.length)的数量*(str1.charAt(str1.length()-1)+str2.chatAt(0))的数量。
import java.util.*;
public class Solution {
/**
* 解码
* @param nums string字符串 数字串
* @return int整型
*/
public int solve (String nums) {
// write code here
int[] myInt = new int[nums.length()];
ArrayList<String> goodString = new ArrayList<String>();
for(int i = 1; i<= 26; i++){
goodString.add(""+i);
}
if(goodString.contains(""+nums.charAt(0))){
myInt[0] = 1;
}
else{
myInt[0] = 0;
}
for(int i = 1; i<nums.length(); i++){
int left = 0;
if(goodString.contains(""+nums.charAt(i))){
left = 1;
// System.out.println(nums.charAt(i));
}
int right = 0;
if(i - 2< 0){
right = 1;
}
if(i-2>=0){
right = myInt[i-2];
}
int n1 = left*myInt[i-1];
int n2 = 0;
if(goodString.contains(""+nums.charAt(i-1) + nums.charAt(i))){
n2 = 1;
}
int n3 = n2*right;
//System.out.println(""+n3);
myInt[i] = n1 + n3;
}
return myInt[myInt.length - 1];
/*
int[] myInt = new int[nums.length()];
myInt[0] = 1;
ArrayList<String> goodString = new ArrayList<String>();
for(int i = 1; i<= 27; i++){
goodString.add("" + i);
}
for(int i = 1; i< nums.length(); i++){
myInt[i] = myInt[i-1] ;
if(!goodString.contains(""+ nums.charAt(i-1)+nums.charAt(i)) && !goodString.contains(""+nums.charAt(i))){
return 0;
}
if(goodString.contains(""+ nums.charAt(i-1)+nums.charAt(i)) && goodString.contains(""+nums.charAt(i))){
myInt[i] = myInt[i] + 1;
}
}
return myInt[myInt.length - 1];
*/
/*
if(nums.length() == 0){
return 1;
}
if(nums.length() == 1){
if(goodString.contains(nums)){
return 1;
}
else{
return 0;
}
}
int n1 = 0;
int n2 = 0;
String s = "" + nums.charAt(0);
if(goodString.contains(s)){
n1 = solve(nums.substring(1));
}
s=s+nums.charAt(1);
if(goodString.contains(s)){
n2 = solve(nums.substring(2));
}
return n1+n2;
*/
}
/*
ArrayList<String> goodString = new ArrayList<String>();
Solution(){
for(int i = 1; i<= 26; i++){
goodString.add("" + i);
}
}
*/
}

京公网安备 11010502036488号