String 在Haxe中反转字符串
在Haxe中反转字符串的其他选项有哪些? 我提出我的(简单、清晰、初学者喜欢):String 在Haxe中反转字符串,string,haxe,String,Haxe,在Haxe中反转字符串的其他选项有哪些? 我提出我的(简单、清晰、初学者喜欢): 类反向限制{ 公共静态函数main(){ Sys.println(“输入一些单词:”); //让我们读一些输入! var someWord=Sys.stdin().readLine(); //将字符串拆分为数组,反转字符串,然后再次联接 var stringArray:Array=someWord.split(“”); stringArray.reverse(); var reversedString=string
类反向限制{
公共静态函数main(){
Sys.println(“输入一些单词:”);
//让我们读一些输入!
var someWord=Sys.stdin().readLine();
//将字符串拆分为数组,反转字符串,然后再次联接
var stringArray:Array=someWord.split(“”);
stringArray.reverse();
var reversedString=stringArray.join(“”);
//最后,享受反向字符串:
Sys.print(“反转的单词看起来像这样:”);
Sys.println(反向字符串);
}
}
您可以将代码移动到单独的静态功能:
class StringUtil {
static public function reverse(s:String):String {
var a = s.split('');
a.reverse();
return a.join('');
}
}
然后这样做:
using StringUtil;
class ReverseString {
public static function main() {
Sys.print("Enter some words: ");
// Lets read some input!
var someWord = Sys.stdin().readLine();
// Just reverse it
var reversedString = someWord.reverse();
// And finally, enjoy the reversed string:
Sys.print("Reversed word looks like this: ");
Sys.println(reversedString);
}
}
使评论变得相当过时,不是吗
或者,您可以向后迭代字符串的字符并将它们添加到StringBuf
,但我猜这在大多数平台上都比较慢。与其他一些方法相比,使用split()比较慢,尤其是当字符串足够大时
下面的测试是在我的计算机上用Haxe2.10编译的Neko target上完成的。让我们首先测试一个6个字符的字符串(“abcdef”)
带有拆分/联接的实施A大约需要(0.030ms):
实施方案B运行速度与解决方案A(0.032ms)相当,甚至不慢:
实现C比实现A快5倍(0.006ms):
实现D速度最快,大约是实现A(0.002ms)的16倍:
使用6个字符的字符串对Neko的测量结果进行重述(从500000次迭代计算,并进行相应的划分):
- A:0.030ms
- B:0.032ms(最差)
- C:0.006ms(比A快5倍)
- D:0.002ms(最佳,比A快16倍)
- A:0.996ms
- B:1.326ms(仍然最差)
- C:0.166ms(比A快6倍)
- D:0.044ms(最佳,比A快22倍)
出于这些原因,我推荐实施D您的解决方案更优雅,因此我购买它你试过其他目标吗?
using StringUtil;
class ReverseString {
public static function main() {
Sys.print("Enter some words: ");
// Lets read some input!
var someWord = Sys.stdin().readLine();
// Just reverse it
var reversedString = someWord.reverse();
// And finally, enjoy the reversed string:
Sys.print("Reversed word looks like this: ");
Sys.println(reversedString);
}
}
var s = "abcdef";
var a = s.split('');
a.reverse();
s = a.join('');
// s contains "fedcba"
var s = "abcdef";
var s2 = "";
for (i in -s.length+1...1)
s2 += s.charAt(-i);
// s2 contains "fedcba"
import StringBuf;
using StringTools;
var s = "abcdef";
var s2 = new StringBuf();
for (i in -s.length+1...1)
s2.add(s.charAt(-i));
// s2.toString() contains "fedcba"
import StringBuf;
using StringTools;
var s = "abcdef";
var s2 = new StringBuf();
for (i in -s.length+1...1)
s2.addChar(s.fastCodeAt(-i));
// s2.toString() contains "fedcba"
// if introducing var s3 = s2.toString() it then takes from 0.003 to 0.004ms total
// so this still seems the fastest on Neko.