最近很多小伙伴都在问在O和1中反转Java中的字符串?这两个问题,那么本篇文章就来给大家详细解答一下,同时本文还将给你拓展Java中如何使用栈来反转字符串?、使用反向迭代器在C中反转字符串?、反转Ja
最近很多小伙伴都在问在O和1中反转Java中的字符串?这两个问题,那么本篇文章就来给大家详细解答一下,同时本文还将给你拓展Java中如何使用栈来反转字符串?、使用反向迭代器在C中反转字符串?、反转JavaScript中的给定字符串、反转Java中的句子等相关知识,下面开始了哦!
本文目录一览:在O(1)中反转Java中的字符串?(java反转正整数的位)
在给定CharSequence的情况下,标准Java库中是否有任何设施可以在O(1)时间中产生相反的结果?
我想这很容易实现,只是想知道它是否已经存在。(我怀疑未提供此功能的原因是因为“简单”方式实际上会破坏多字符代码点-
但在许多情况下,我们知道我们没有处理这些问题)。
谢谢
更新 嘿,大多数人认为这个“不可能”的好家伙有点可笑!好吧,实际上(从概念上来说)是微不足道的-伪java可以很清楚地说明这一点:
class MyReverseString extends String { //of course I can''t extend String! final String delegate; MyReverseString(String delegate) { this.delegate = delegate; } int length() { return delegate.length(); } int charAt(int i) { return delegate.charAt(delegate.length() - 1 - i); }}
我还悬而未决,只是在极少数情况下,JDK中已经存在类似显而易见的解决方案(例如,请参见Jon
Skeet的解决方案),并且有人对此有所了解。(再次,由于那些讨厌的代码点,这种可能性很小)。
编辑 可能是因为我的标题中带有“ string”(而不是String!)引起了混乱,而我只要求“
CharSequence的反向字符”。如果您感到困惑,对不起。我希望O(1)部分能够清楚说明所要的内容。
答案1
小编典典好的,您可以轻松地生成一个实现,CharSequence
该实现返回相同的长度,当要求输入特定字符时,返回length-index-1
。toString()
变成O(n)当然…
创建
相反的对象CharSequence
将是O(1)-毕竟要做的就是存储对原始的引用CharSequence
。显然,对序列中的所有字符进行迭代将是O(n)。
请注意,创建反向CharSequence
(根据问题的正文)与创建反向(根据问题的 标题 ) 并不
相同。实际生成String是O(n),并且必须是。String
__
示例代码,大多数未经测试:
public final class ReverseCharSequence implements CharSequence{ private final CharSequence original; public ReverseCharSequence(CharSequence original) { this.original = original; } public int length() { return original.length(); } public char charAt(int index) { return original.charAt(original.length() - index - 1); } public CharSequence subSequence(int start, int end) { int originalEnd = original.length() - start; int originalStart = original.length() - end; return new ReverseCharSequence( original.subSequence(originalStart, originalEnd)); } public String toString() { return new StringBuilder(this).toString(); }}
Java中如何使用栈来反转字符串?
使用堆栈
package net.javaguides.corejava.string; import java.util.Stack; /** * * @author Ramesh Fadatare * */ public class ReverseStringUsingStack { // Function to reverse a string in Java using a stack and character array public static String reverse(String str) { // base case: if string is null or empty if (str == null || str.equals("")) return str; // create an empty stack of characters Stack < Character > stack = new Stack < Character > (); // push every character of the given string into the stack char[] ch = str.toCharArray(); for (int i = 0; i < str.length(); i++) stack.push(ch[i]); // start from index 0 int k = 0; // pop characters from the stack until it is empty while (!stack.isEmpty()) { // assign each popped character back to the character array ch[k++] = stack.pop(); } // convert the character array into string and return it return String.copyValueOf(ch); } public static void main(String[] args) { String str = "javaguides"; str = reverse(str); // string is immutable System.out.println("Reverse of the given string is : " + str); } }
输出:
Reverse of the given string is : sediugavaj
java基本数据类型有哪些
Java的基本数据类型分为:1、整数类型,用来表示整数的数据类型。2、浮点类型,用来表示小数的数据类型。3、字符类型,字符类型的关键字是“char”。4、布尔类型,是表示逻辑值的基本数据类型。
以上就是Java中如何使用栈来反转字符串?的详细内容,更多请关注php中文网其它相关文章!
使用反向迭代器在C中反转字符串?
stringstream convert; string y=""; string z=""; convert << x; string::reverse_iterator rit; y=convert.str(); int j=0; for (rit = y.rbegin(); rit < y.rend(); rit++){ z[j] = *rit; j++; }
有人可以帮我解决这个问题吗?谢谢!
解决方法
z.assign(y.rbegin(),y.rend());
或者你可以在施工时做到:
std::string z(y.rbegin(),y.rend());
如果要修改字符串,请使用std :: reverse:
std::reverse(y.begin(),y.end());
反转JavaScript中的给定字符串
首先用逗号分隔字符串。然后反转数组。然后将其转换为字符串。
let foo = 'hello,world,wow' // assign the string
foo = foo.split(',') // splits by comma
foo = foo.reverse() // reverses the array
foo = foo.join() // converts array back into a comma separated string
,
var initialString = "hello,wow"
var finalString = initialString.split(",").reverse().join(",");
console.log(finalString) // "wow,hello"
,
这是反转给定字符串的解决方案。
let str = "hello,wow";
let temp = str.split(",");
let output = "";
// Index will starting from last element
let index = (temp.length - 1);
for(let k=0; k<temp.length; k++){
if(k == (temp.length - 1)){
// Last Element so no need of comma
output += temp[index];
}
else {
// Adding commas to the output
output += temp[index]+",";
}
index--;
}
alert(output);