我的室友的老师给了他们一个在JAVA中实现字符串长度方法的任务? 我们想出了两种方法。
检查元素,当得到越界异常时,表示字符串结束,我们捕获此异常,然后我们就可以得到长度。
每次传递一个字符串来计算长度时,我们会在其末尾添加特殊字符,它可以是'\ 0'或“A”等等。
但是我们都认为这两种方式可以完成任务,但是它们很糟糕(或者是异常的坏习惯),它并不酷。
我们用谷歌搜索了它,但没有得到我们想要的东西。
答案 0 :(得分:1)
您可能想要的伪代码是:
counter = 0
for(Character c in string) {
counter = counter + 1
}
这要求您找到将Java String
转换为字符数组的方法。
答案 1 :(得分:1)
这样的东西?
int i = 0;
for (char ch : string.toCharArray()) {
i++;
}
答案 2 :(得分:1)
老师正在努力让他或她的学生思考,并且会对解决问题的创造性解决方案感到满意。
这些解决方案都不会在现实世界中使用,因为我们有String.length()
方法。但是,您正在学习的创造性,解决问题的过程将用于实际开发。
“1。检查元素,当得到越界异常时,它意味着字符串结束,我们捕获这个异常,然后我们就可以获得长度。”
在这种情况下,您会在正常情况下引发异常。常见的样式指南是仅在特殊情况下抛出异常。与正常的控制流相比,抛出异常可能更昂贵并且更难以被人类追随。
那就是说,你的这个想法对很长的琴弦都有潜在的优势。到目前为止,所有发布的答案都以线性时间和空间运行。它们执行的时间和/或额外空间与字符串的长度成比例。 使用这种方法,您可以实现对字符串长度的O(log n)搜索。
线性与否,教师可能会发现这种方法的创造性是可以接受的。如果老师已经传达了异常只针对例外情况的想法,请避免使用。
“2。每次传递一个字符串来计算长度时,我们会在其末尾添加特殊字符,它可以是'\ 0'或”A“等。”
这个想法有一个缺陷。如果字符串包含您的特殊字符会发生什么?
修改强>
一个简单的实现方法是使用String.toCharArray()
获取底层char数组的副本,然后简单地获取它的长度。与您的想法不同,这不是一种就地方法 - 使副本在内存中需要额外的空间。
String s = "foo";
int length = s.toCharArray().length;
答案 3 :(得分:0)
试试这个
public static int Length(String str) {
str = str + '\0';
int count = 0;
for (int i = 0; str.charAt(i) != '\0'; i++) {
count++;
}
return count;
}
答案 4 :(得分:-1)
怎么样:
"your string".toCharArray().length