StringBuffer和之间的主要区别是StringBuilder什么?在决定其中任何一个时,是否存在任何性能问题?
请告诉我一个实时的情况来比较String,StringBuffer和StringBuilder?
我要扭转各个人在Java中的String(不是整个字符串,只是每个人的字)的字.
示例:如果输入String为"Hello World",则输出应为"olleH dlroW".
我想知道哪个程序变量更好运行时?
两种变体看起来都很容易实现.但什么是更好的使用和在哪些情况下?
字符串反转:
public static String reverse(String s)
{
String rev = "";
for (int i = s.length() - 1; i >= 0; i--)
rev += s.charAt(i);
return rev;
}
Run Code Online (Sandbox Code Playgroud)
StringBuilder反向:
public static String reverse(String s)
{
StringBuilder rev = new StringBuilder();
for (int i = s.length() - 1; i >= 0; i--)
rev.append(s.charAt(i));
return rev.toString();
}
Run Code Online (Sandbox Code Playgroud) 如果字符串是回文(字符串可以是带有大写或小写字母,空格等的命题),我需要一种能够以最快的执行时间进行验证的算法.所有这些都在Java中.我有一个样本:
bool isPalindrome(string s) {
int n = s.length();
s = s.toLowerCase();
for (int i = 0; i < (n / 2) + 1; ++i) {
if (s.charAt(i) != s.charAt(n - i - 1)) {
return false;
}
}
return true;
}
Run Code Online (Sandbox Code Playgroud)
我使用.toLowerCase()函数将字符串转换为小写字母,但我不知道它对执行时间有多大影响.
而且我不知道如何以有效的方式解决标点符号和单词之间的空格问题.
我被要求解决低于N ^ 2时间复杂度和O(N)空间复杂度的以下问题:
为以下情况编写程序反向字符串:
输入: - "Hello World"输出: - "olleH dlroW"
我试图弄清楚它,但无论我尝试什么,我都无法想出时间复杂度低于N ^ 2,我的代码可以在下面看到,你有什么建议我怎么能想出来线性时间的解决方案?
注意:不允许使用内置方法
public static String stringReverser(String str) {
if (str == null || str.isEmpty()) {
throw new IllegalArgumentException();
}
if (str.length() < 2) {
return str;
}
String[] strArr = str.split(" ");
StringBuffer newHolder = new StringBuffer();
for (int i = 0; i < strArr.length; i++) {
int j = 0;
int len = strArr[i].length();
char[] newCharStr = strArr[i].toCharArray();
while (j < len) {
char temp = …Run Code Online (Sandbox Code Playgroud) 如何在Java中将String转换为适当的位置
输入字符串:1234输出应该:4321
我试过的.
public static void main(String args[])
{
String number = "1234";
System.out.println("original String: " + number); String reversed = inPlaceReverse(number);
System.out.println("reversed String: " + reversed);
}
public static String inPlaceReverse(final String input)
{
final StringBuilder builder = new StringBuilder(input);
int length = builder.length();
for (int i = 0; i < length / 2; i++)
{
final char current = builder.charAt(i);
final int otherEnd = length - i - 1;
builder.setCharAt(i, builder.charAt(otherEnd)); // swap
builder.setCharAt(otherEnd, current);
}
return builder.toString(); …Run Code Online (Sandbox Code Playgroud) 我是Java新手,正在寻找代码优化技术.这段代码使用两个for循环给出了预期的输出,我想减少/消除循环(如果可能的话).
public static void main(String[] args) {
String dummy = "Hello how are you";
String[] strArr = dummy.split(" ");
for(int i=0; i < strArr.length;i++){
String word = strArr[i];
for(int j=word.length(); j > 0; j--){
System.out.print(word.charAt(j - 1));
}
System.out.print(" ");
}
}
Run Code Online (Sandbox Code Playgroud)
输出: olleH woh era uoy
请指教.
我下面的代码应该接受用户的整数,然后以相反的顺序打印他们输入的任何整数。我没有收到任何错误,但是当我运行该程序时,整数并未反向打印。有人可以帮我找出原因吗?
import java.util.*;
public class ReverseDigits {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String response;
System.out.println("Please enter a whole number.");
response = sc.next();
reverseDigit(response);
}
public static void reverseDigit(String digit) {
ArrayList al = new ArrayList();
al.add(digit);
Collections.reverse(al);
System.out.println("Your number in reverse order is: " + al);
}
}
Run Code Online (Sandbox Code Playgroud) java ×9
string ×5
reverse ×2
algorithm ×1
arraylist ×1
collections ×1
oop ×1
optimization ×1
palindrome ×1
performance ×1
stringbuffer ×1
swap ×1