【问题标题】:Sort a string in alphabetical order without arrays in java在java中没有数组的按字母顺序对字符串进行排序
【发布时间】:2013-11-14 01:41:10
【问题描述】:

我需要做的是获取一个包含随机字母的字符串,然后将这些字母按字母顺序排列。例如,lidfj,将是; dfijl.

我无法弄清楚我应该如何启动代码。我知道我可能需要使用比较,因为我不允许使用数组,但我不确定这是否是最好的方法。而且我也不确定如何开始。

提前致谢。

编辑:我想我已经完成了今晚的工作,因为我似乎想不出其他任何事情。

public class PP426 {
    public static String alphabetize (String input) {
        String sorted = ";
        for (int i = 0; i < input.length(); i++) {
            char c = input.charAt(i);
            if () {
                sorted += character;
            }
        }

        return sorted;

    }
    public static void main(String[] args) {
        System.out.println(alphabetize("iunaselfksdf"));
    }
}

【问题讨论】:

  • 我会尝试使用 String 变量,然后仔细研究 String 类函数 - docs.oracle.com/javase/6/docs/api/java/lang/String.html
  • 太……等等。刚刚阅读了马苏德的回答,现在我不确定:是对字符串进行排序(即哪个字符串先出现),还是对字符串中的字母进行排序?
  • @JohannesH。 - 对字符串中的字母进行排序
  • @Adel:我也是这么想的。那么我的回答至少是合适的。 ^^
  • 您是否与您的导师讨论过如何做到这一点以及他们希望您从中得到什么?

标签: java


【解决方案1】:

从您的问题和 cmets 来看,这似乎是一项家庭作业,您只能使用 String 类进行排序(这显然效率不高,但是......好吧......无论如何它是一个家庭作业)。

在这里,我假设您已经知道如何使用数组进行排序(例如冒泡排序)。如果没有,就找最简单的排序算法,比如插入排序,学习一下。

如果您知道如何使用数组进行排序,您可以简单地将您的逻辑转换为使用 String 的方法。

例如:

  • 访问位置的字符:yourString.charAt(i)
  • 在位置设置字符:yourString = yourString.substring(0, i) + charToSet + yourString.substring(i+1)
  • 附加一个字符:yourString += charToSet

如果您甚至没有排序方面的知识,这里有一种只涉及字符串的方法:

我不会给你实际的代码。自学:

for currentChar in 'a' to 'z'
  loop through each char in inputString
    if you encounter any char = currentChar then 
       append that character to resultString
    end if 
  end loop
end for

resultString contains the result you need

【讨论】:

  • 呃,这比基本的“找到最小的剩余元素并将其插入结果的末尾”效率更低
  • 我对排序一无所知,我们也没有学过数组。不过,我们应该很快就会学习数组。
  • @JohannesH。我知道我的方法有点棘手(因为我假设字符串只包含'a'-'z'):P 在我看来,OP 真的是一个新手,而且插入排序对他来说已经太多了。 . 所以我给出了这种“棘手”的方法(实际上是一种桶排序),我认为它更容易让 OP 掌握这个概念......
  • 你告诉我,我的头感觉快要爆炸了哈哈。
  • @itsaferbie 我知道编程新手很难学习。尝试将问题分解成更小的部分,并一点一点地添加功能。例如第 1 步:编写一个循环,并打印出 a 到 z。第 2 步:不是打印 a 到 z,而是在循环的每次迭代中,查看该字符是否在输入字符串中可用。如果存在就打印出来。第 3 步:不要将字符打印出来,而是将其附加到另一个字符串。我相信作为一个开发者你应该有能力自己解决这些小问题。
【解决方案2】:

使用for 循环和String.charAt() 遍历字符串。使用StringBuilder (为了提高效率,连接字符串也可以,但在性能方面很不错)按顺序组装字母。有了这些知识,现在实现你喜欢的排序算法(我猜,这是练习的一部分,所以我不会在这里做;))

【讨论】:

  • 我们还没有了解字符串构建器,所以我不确定如何使用 StringBuilder。
  • 然后忽略那部分(并使用普通字符串代替)并询问您的老师。或者在你得到排序后回来,我会告诉你如何使用StringBuilder
  • @itsaferbie - Stringbuillder 是一种奖励。字符串工作正常
  • 我可以粘贴一些我目前输入的代码来看看我是否走在正确的轨道上吗?
  • 当然,我想,继续吧!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-11-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多