求助南京软件公司面试题

soft200816 2009-12-27 06:27:23
有这么一个小程序,我想了半天没来得及写上去,大家帮忙解答:已知a、s、d、A、f、h、F要求排序后的结果是:A、a、d、F、f、h、s
请大师指导指导!
...全文
511 38 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
38 条回复
切换为时间正序
请发表友善的回复…
发表回复
huangqingjie2010 2010-01-03
  • 打赏
  • 举报
回复
学习
blliy117 2010-01-03
  • 打赏
  • 举报
回复
高手如云!
学习了!
ihgoggog 2010-01-03
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 b47248054 的回复:]
Java codepublicclass Sort {publicstaticvoid main(String[] args)
{char a[]={'g','s','A','a','U','K','e','k'};int l=a.length;char temp;int j;int n=l-1;for(int i=0;i<l;i++)
{for(j=0;j<n;j++)
?-
[/Quote]
顶起
renzhe0420 2010-01-02
  • 打赏
  • 举报
回复
首先将大写字母转化为小写进行排序,然后对结果中相同的两个中的前者转化为大写即可
zhoutt1989 2010-01-02
  • 打赏
  • 举报
回复
学习了
whut_lcy 2010-01-02
  • 打赏
  • 举报
回复
26个字母按照ascii值比较大小,无需用集合框架搞就可以实现
xiongguangcai 2010-01-02
  • 打赏
  • 举报
回复
//不错的题目

public static void main(String[] args) {
String[] c={"a", "s", "d", "A", "f", "h", "F" };
for(int i=0;i<c.length;i++){
for(int j=0;j<c.length;j++){
//将他们全变成大写在比较一样的字母就在一起咯
if(c[i].toLowerCase().hashCode()<c[j].toLowerCase().hashCode()){
String t=c[i];
c[i]=c[j];
c[j]=t;
}
//顺序是a A d f F h s
}

}
//再将相同的字母换个位置
for(int i=0;i<c.length-1;i++){
if(c[i].toLowerCase().hashCode()==c[i+1].toLowerCase().hashCode()&&c[i].hashCode()>c[i+1].hashCode()){
String t=c[i];
c[i]=c[i+1];
c[i+1]=t;
}
}

//打印A a d F f h s
for(int i=0;i<c.length;i++){
System.out.println(c[i]+" "+c[i].hashCode());
}
}
zhuwen9 2010-01-02
  • 打赏
  • 举报
回复
21# 大虾的改改(精华在于 大0.5) 学习了!

public class SortTest {
public static void main(String[] args) {
Character[] c = { 'a', 's', 'd', 'A', 'f', 'h', 'F' };
double tempA;
double tempB;
char chA;
for (int i = 0; i < c.length; i++) {
for (int j = i + 1; j < c.length; j++) {
tempA = c[i] < 97 ? c[i] + 31.5 : c[i];
tempB = c[j] < 97 ? c[j] + 31.5 : c[j];
if (tempA > tempB) {
chA = c[i];
c[i] = c[j];
c[j] = chA;
}
}
}
for (int i = 0; i < c.length; i++) {
System.out.println(c[i]);
}
}
}

soft200816 2010-01-01
  • 打赏
  • 举报
回复
kaoh1631 的答案确实对,其他的希望大家验证!不是很对,作为一个面试题这样写也复杂了
soft200816 2010-01-01
  • 打赏
  • 举报
回复
这可是一套笔试题啊!大家都用到内置方法,感觉不太好,没有一些简单的吗
张祥龙 2009-12-30
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 kaoh1631 的回复:]
SHIT  代码注释发错了 重新发一个~
Java codeimport java.util.*;publicclass Test
{publicstaticvoid main(String[] args) {
Character [] c={'a','s','d','A','f','h','F'};//冒泡排序for(int i=0;i<c.length;i++){for(int j=i+1;j<c.length;j++){
Double c2asciiF=(c[i].hashCode()<=90?c[i].hashCode()+31.5:c[i].hashCode());
Double c2asciiL=(c[j].hashCode()<=90?c[j].hashCode()+31.5:c[j].hashCode());if(c2asciiF>c2asciiL){
Character tmp=c[i];
c[i]=c[j];
c[j]=tmp;
}
}
}//循环打印for(int i=0;i<c.length;i++){
System.out.println(c[i]);
}
}
}
[/Quote]
UP
leoliu0822 2009-12-30
  • 打赏
  • 举报
回复

import java.lang.*;
import java.util.*;

public class Test{
public static void main(String[] args){
String[] s = new String[]{"a","s","d","A","f","h","F"};
System.out.println(Arrays.toString(s));
//System.out.println((int)'a');
//System.out.println((int)'A');
//System.out.println((int)'z');
//System.out.println((int)'Z');
String [] s1 = new String[50];
for(int i=0;i<s.length;i++){
char c = getChar(s[i]);
System.out.println(c);
if(isUpper(c)){
//System.out.println(getUpperIndex(c));
s1[getUpperIndex(c)] = s[i];
}else{
//System.out.println(getLowIndex(c));
s1[getLowIndex(c)] = s[i];
}
}
System.out.println(Arrays.toString(s1));
copyArrayForNotNull(s1,s);
System.out.println(Arrays.toString(s));



}

//将String转成char并取得值
public static char getChar(String s){
return (s.charAt(0));
}
//取得大写char应该在数组中的位置 存放位置0,2,4...偶数位
public static int getUpperIndex(char c){
final int upperStart = 65;
final int upperEnd = 90;
int i = 2*((int)c-upperStart);
return i;
}
//取得小写char应该在数组中的位置 存放位置1,3,5...奇数位
public static int getLowIndex(char c){
final int lowStart = 97;
final int lowEnd = 122;
int i = 2*((int)c-lowStart)+1;
return i;
}
//判断是否为大写
public static boolean isUpper(char c){
final int upperStart = 65;
final int upperEnd = 90;
final int lowStart = 97;
final int lowEnd = 122;
if((int)c>=upperStart && (int)c<=upperEnd){
return true;
}else{
return false;
}
}
//将数组s1中的非空元素拷贝到s2
public static boolean copyArrayForNotNull(String[] s1,String[] s2){
int s2Index = 0;
try{
for(int i=0;i<s1.length;i++){
if(s1[i]!=null){
s2[s2Index] = s1[i];
}else{
continue;
}
s2Index++;
}
}catch(Exception e){
System.out.println("数组拷贝错误,错误原因:"+e.toString());
return false;
}
return true;
}
}


重新写了遍 方法比较搓 见谅 呵呵
springbird 2009-12-30
  • 打赏
  • 举报
回复
学习了
leoliu0822 2009-12-30
  • 打赏
  • 举报
回复
以前帮别人写过 貌似是考试。。。。不记得了
TzSword 2009-12-29
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 b47248054 的回复:]
Java codepublicclass Sort {publicstaticvoid main(String[] args)
{char a[]={'g','s','A','a','U','K','e','k'};int l=a.length;char temp;int j;int n=l-1;for(int i=0;i<l;i++)
{for(j=0;j<n;j++)
?-
[/Quote]
代码已测试 不行。。。。
排序不正确..
sparts87A 2009-12-29
  • 打赏
  • 举报
回复
学习
b47248054 2009-12-29
  • 打赏
  • 举报
回复
public class Sort {
public static void main(String[] args)
{
char a[]={'g','s','A','a','U','K','e','k'};
int l=a.length;
char temp;
int j;
int n=l-1;
for(int i=0;i<l;i++)
{
for(j=0;j<n;j++)
{
//System.out.print(" "+(j+1));
if(Character.toUpperCase(a[j])>=Character.toUpperCase(a[j+1]))
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
n--;
}
for(int k=0;k<l-1;k++)
{
if(Character.toUpperCase(a[k])==Character.toUpperCase(a[k+1]))
{
temp=a[k];
a[k]=a[k+1];
a[k+1]=temp;
}
}
for(int k=0;k<l;k++)
{
System.out.print(" "+a[k]);
}
}
}
xiongchangjing 2009-12-29
  • 打赏
  • 举报
回复
ascii应该能解决吧?
小瑞 2009-12-29
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 dinghun8leech 的回复:]
类名包含中文,包名包含中文,编译不通过。。。。。。。。。。。。。

把这些字母转成ascii码,再来个插入排序,也是个方法
[/Quote]

这样子还不如
// String[] test = {"a","s","d","A","f","h","F"};
// Arrays.sort(test);

,但是不行,
结果是[A, F, a, d, f, h, s],不是楼主想要的

蜗牛的不错,但是没看懂
ZMycm 2009-12-29
  • 打赏
  • 举报
回复
学习了~~
加载更多回复(18)

67,549

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧