求一个算法 (高手来帮忙啊) 如果 一用户输入 1357 我要得到比当前用户用输入的这个数大的下一个数字(也就是1375 下一个则是1537 1573 3157 3175) 怎么写这个程序。声明一下。不要先把用户输入的数字拆解(1 3 5 7)然后组合(如 1357 1375 1537 1573)考虑效率看那位高手能帮一下小弟。。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 一楼的 ChDw 我同意你的观点我想到了这种方法。。但是我不知道从何入手。。能不能麻烦你写一下啊。。真的,我当时看到这个题 的时候 我想到两中方法,但是你的这种方法我还没有证实,我在写的时候不知道从何入手。。麻烦了。。一定要考虑效率! 算法很简单啊,也只是一个循环罢了。String str = "19876";char[] array = str.toCharArray();int i = array.length - 2;while(i >= 0) { if(array[i] < array[i + 1]) { char tmp = array[i]; array[i] = array[array.length - 1]; array[array.length - 1] = tmp; int z = (i + array.length) / 2; for(int j = i + 1, k = array.length - 1; j <= z; j++, k--) { tmp = array[j]; array[j] = array[k]; array[k] = tmp; } } i--;}if(i < 0) throw new IllegalArgumentException("No More");System.out.println(new String(array)); 啊,少了一个break了String str = "27419";char[] array = str.toCharArray();int i = array.length - 2;while(i >= 0) { if(array[i] < array[i + 1]) { char tmp = array[i]; array[i] = array[array.length - 1]; array[array.length - 1] = tmp; int z = (i + array.length) / 2; for(int j = i + 1, k = array.length - 1; j <= z; j++, k--) { tmp = array[j]; array[j] = array[k]; array[k] = tmp; } break; } i--;}if(i < 0) throw new IllegalArgumentException("No More");System.out.println(new String(array)); 对了 ChDw 我想 我想问一下 里面for的上一行开始我不太理解 意思 ,能说说么。。我看了看没有看懂。不好意思。小弟,才疏学浅。。呵呵 for上一行是计算要变换顺序的中点,即198765432 变换一次后得到298765431,然后计算6这个数字所在的位,然后开始9与1交换、8与3交换,7与4交换,6与5交换,然后j超过了z值,不再进行移动,其实也可以不计算z,改成j < k就可以 myeclipse怎么控制程序 hql多表连接查询问题 java webservices例子 求助JSP页面打印设置的问题,谢谢。 想做一个能够产生论坛的主站,这个主站能够为所有的社区提供服务,能够按照客户的需求产生各个特殊的定制的论坛,请问如何实现数据库设计 关于struts1 action的scope的问题 struts 的问题 高手请进(20) 请问大家,这个问题是什么原因? 怎么进入各分类社区啊? SSH中 hibernate的一个异常,好心人帮我看看是怎么回事,谢了 求助啊 ajax请求servlet的问题
char[] array = str.toCharArray();
int i = array.length - 2;
while(i >= 0) {
if(array[i] < array[i + 1]) {
char tmp = array[i];
array[i] = array[array.length - 1];
array[array.length - 1] = tmp;
int z = (i + array.length) / 2;
for(int j = i + 1, k = array.length - 1; j <= z; j++, k--) {
tmp = array[j];
array[j] = array[k];
array[k] = tmp;
}
}
i--;
}
if(i < 0)
throw new IllegalArgumentException("No More");
System.out.println(new String(array));
char[] array = str.toCharArray();
int i = array.length - 2;
while(i >= 0) {
if(array[i] < array[i + 1]) {
char tmp = array[i];
array[i] = array[array.length - 1];
array[array.length - 1] = tmp;
int z = (i + array.length) / 2;
for(int j = i + 1, k = array.length - 1; j <= z; j++, k--) {
tmp = array[j];
array[j] = array[k];
array[k] = tmp;
}
break;
}
i--;
}
if(i < 0)
throw new IllegalArgumentException("No More");
System.out.println(new String(array));
我想 我想问一下 里面for的上一行开始我不太理解 意思 ,能说说么。。我看了看没有看懂。不好意思。
小弟,才疏学浅。。呵呵