与Java
计数我有两个给出的字符串:String a = "111"
和String b = "132"
,这两个字符串我想要实现这个计数顺序:与Java
111 112
121
122
131
132
其他例子是,如果我有两个给定的字符串是这样的:字符串A = “1111” 和字符串b = “1223”,我希望这样的结果:
1111 1112
1113
1121
1122
1123
1211
1212
1213
1221
1222
1223
这些可以像String a = "0100110"
和String b = "01101120"
也更长的字符串。
我等待来自用户将这些字符串中的条件,在字符串a
每个字符应当是低于或高于字符串相同的字符位置b
(字符串一个=“11”和串B =“00” < =不相等允许)
这是一个递归的方法到现在为止,但因为它产生两次或更多数量取决于输入它并不能很好地工作:
public void expand(String l,String h){ for(int i=l.length()-1; i>=0; i--)
{
sb = new StringBuffer(l);
if(charToDigit(l.charAt(i)) < charToDigit(h.charAt(i))) {
sb.replace(i, i+1, inc(sb.charAt(i)));
expand(sb.toString(),h);
System.out.println(sb.toString());
}
}
}
回答:
呼叫数量较少x
和较大数量y
。如果您计算y
mod 10(y % 10
),您会发现最低有效位的值,请拨打n
。同样,计算x
的最低有效位数,将其称为m
然后,创建一个临时变量i
,最初等于x
。循环直到该数字等于y。
在循环体中,首先打印i
。然后,如果i
的最低有效位数(同样由i % 10
计算),则称其为o
,小于n
,增量为i
。否则,如果o == n
,则通过10 - n + m
增加i
。当然,如果是这种情况,o > n
出错了(即来自用户的输入无效),因为保证是x
的所有数字小于或等于y
中的相应数字。
因此,在伪代码:
x = smaller number y = larger number
n = y % 10
m = x % 10
i = x
while (i <= y):
print i
o = i % 10
if (o < n):
i += 1
else if (o == n):
i += 10 - n + m
回答:
这里是我的解决方案
static String l="000"; static String h="232";
static ArrayList<String> combinations = new ArrayList<String>();
static int stringLength= l.length();
for(int i=0; i<rulelength; i++)
{
combinations.add((charToDigit(h.charAt(i)) - charToDigit(l.charAt(i))+1)+"");
}
int number = 1;
for(int i=0; i<combinations.size(); i++)
{
number*=Integer.parseInt(combinations.get(i));
}
int change = Integer.parseInt(combinations.get(combinations.size()-1));
expand(l, h, change, number);
public static void expand(String l, String h, int change, int comb)
{
StringBuffer sb = new StringBuffer(l);
int pos = stringLength-1;
int tmpPos = pos;
for(int i=1; i<=comb; i++)
{
System.out.println(sb.toString());
sb.replace(pos, pos+1, inc(sb.charAt(pos)));
if((i % change)==0) {
for(int j=stringLength-1; j>0; j--)
{
if(charToDigit(sb.charAt(j)) >= (Integer.parseInt(combinations.get(j))-1))
tmpPos = j-1;
else
break;
}
sb.replace(tmpPos, tmpPos+1, inc(sb.charAt(tmpPos)));
for(int j=stringLength-1; j>tmpPos; j--)
{
sb.replace(j, j+1, l.charAt(j)+"");
}
}
}
}
以上是 与Java 的全部内容, 来源链接: utcz.com/qa/266779.html