对纸牌不分花色的大小排序,排序顺序是2,3,..9,JQKA

原创 2015年07月07日 22:46:40

//把字符串转换为整数存储到整数数组中,(有一个特殊的值“10”,占两个字符,整型存储时又只需要分配一个空间,所以用两个索引,i与j.j指向整数数组

里的元素,而i指向字符串里的一个字符,i遇到’1‘则让整数数组存储10,i+2跳到'10'后面的字符上),对整数数组排序,再把整数数组转换为字符串

public class stringfilter {
public static String  zhipaisort(String s){
if(s==null||s.length()==0){
return null;
}
//定义一个变量存储当前字符对应的数值
int value=0;
//10占两个字符在分配整数空间时要减去一个
int count=0;
for(int i=0;i<s.length();i++){
if(s.charAt(i)=='1'||s.charAt(i)=='0'){
count++;
}
}
int[] array=new int[s.length()-count/2];//整数数组存储所有的值
int j=0;//j记录当前指向整形数组的索引
for(int i=0;i<s.length();i++){//i 是指向字符数组的索引
char temp=s.charAt(i);//判断这个字符是10,j,q,k,A这些特殊字符吗
value=temp-'0';//先给赋予一个值,若在“2到9,此值没有问题,其他的更改此值”
if(temp=='1'){
value=10;
i++;
}
if(temp=='J'){
value=11;
}
if(temp=='Q'){
value=12;
}
if(temp=='K'){
value=13;
}
if(temp=='A'){
value=14;
}
array[j]=value;
j++;
}
Arrays.sort(array);
StringBuffer sb=new StringBuffer();
for(int i=0;i<array.length;i++){
if(array[i]>=11){
if(array[i]==11){
sb.append('J');
}
if(array[i]==12){
sb.append('Q');
}
if(array[i]==13){
sb.append('K');
}
if(array[i]==14){
sb.append('A');
}
}else{
sb.append(array[i]);
}


}
return sb.toString();

}

这道题的时间和空间效率都是O(n),不知道有没有更好的办法

版权声明:本文为博主原创文章,未经博主允许不得转载。

python-2-3-如何根据字典中值的大小,对字典中的项排序?

方案1:print(sorted([9,1,2,8,5]))from random import randintd = {x: randint(60,100) for x in 'xyzabc'} #...

十.用C语言实现查找算法 (1)顺序查找;(2)二分查找(折半查找);(3)二叉排序树;(4)哈希查找

程序名称:Search.cpp // 程序功能:采用结构化方法设计程序,实现多种查找算法。 // 程序作者:*** // 最后修改日期:2011-3-3 #include"iostream" #inc...

产生10个1-100的随机整数, * 把其中的奇数按照从小到大的顺序进行排序, * 并按照“1,2,3,、、、”这样的格式打印到d盘下的number.txt文档中。

package com.heima.test;import java.io.FileOutputStream; import java.io.FileWriter; import java.io.IO...

冒泡排序本质:N个数,需要N-1趟,每趟需要比较N-i次(i是指第i趟)如10个数需要比较9+8+7+6+5+4+3+2+1=45次

package none001; //冒泡排序。。。 //冒泡排序本质:N个数,需要N-1趟,每趟需要比较N-i次(i是指第i趟)如10个数需要比较9+8+7+6+5+4+3+2+1=45次 //无...

扑克排序,按花色、值排序(2015年9月10日)

按花色和牌大小排序,红桃>方块>黑桃>梅花。 大概思路:新建Card对象,属性有 private int id; //花色,1234对应红方黑梅 private int values; //数字...

例10.3 从键盘读入若干个字符串,对它们按字母大小的顺序排序,然后把排好序的字符串送到磁盘文件中保存。

解题思路:为解决问题,可分为三个步骤: 从键盘读入n个字符串,存放在一个二维字符数组中,每一个一维数组存放一个字符串; 对字符数组中的n个字符串按字母顺序排序,排好序的字符串仍存放在字符数组中; 将...

拷贝android源码时候-由于windows文件名不分大小写的

将android源码从ubuntu-smb考到硬盘时候会给文件名加(2)的。 从硬盘考到ubuntu-smb之后执行如下,再编译android源码。 [1]android-down# find -...

【Educational Codeforces Round 3 A】【水题 排序】USB Flash Drives 最少数量U盘存储m大小文件

A. USB Flash Drives time limit per test 2 seconds memory limit per test 256 megabytes ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:对纸牌不分花色的大小排序,排序顺序是2,3,..9,JQKA
举报原因:
原因补充:

(最多只允许输入30个字)