精华内容
下载资源
问答
  • Java转置String的各种方法分析

    千次阅读 2020-02-10 18:06:13
    这里有String的各种转置办法,Java语言描述。 肯定不能说面面俱到,但有效的方法基本齐备,还有各种方法之间的比较和优化,看过来。

    字符串倒置

    说到这字符串倒置,其实还有些值得说道的,尽管不难。
    C/C++有个reverse(),可以直接用,但我大Java并没有……
    想到一种办法并不难,但你能想到几种有效的办法呢?
    一起来看看吧!

    先做一下基本的定义,后面可以统一使用:

    String string = "ADFGJINJOOKC";
    int length = string.length();
    char[] chars0 = string.toCharArray();
    

    Strategy_1:倒转char[]

    倒转char[]其实就是新生成一个char[],正向遍历原char[],把char数据逆向复制到新char[]中。

    char[] chars1 = new char[length];
    for (int i = 0; i < length; i++) {
        chars1[i] = chars0[length-i-1];
    }
    System.out.println(new String(chars1));
    

    Strategy_2:利用StringBuilder的reverse()

    虽然String没有reverse(),但可以利用String对象生成StringBuilder对象,再reverse(),打印就直接调toString()了,方便简洁。

    System.out.println(new StringBuilder(string).reverse());
    

    Strategy_3:直接拼接

    所谓直接拼接,其实就是new一个StringBuilder对象,倒着遍历char[],把char一个一个append()到StringBuilder对象上。

    StringBuilder reverse3 = new StringBuilder();
    for (int i = length-1; i >= 0; i--) {
        reverse3.append(chars0[i]);
    }
    System.out.println(reverse3);
    

    看了解法二,说实话,此法大可不必……

    Strategy_4:直接倒着打印

    倒着遍历,直接打印。
    由于需要大量的IO,所以慢。
    也就初学者会真的这么用吧……

    for (int i = length-1; i >= 0; i--) {
        System.out.print(chars0[i]);
    }
    System.out.println();
    

    Strategy_5:利用charAt(i)来拼接

    String确实有charAt(i),但为什么摆着现成的随机访问index不用呢?何必何必,感觉还不如方法三。

    StringBuilder reverse5 = new StringBuilder();
    for (int i = length-1; i >= 0; i--) {
        reverse5.append(string.charAt(i));
    }
    System.out.println(reverse5);
    

    Strategy_6:使用栈来拼接

    栈自然是可以的,LIFO,但单独拿出来而不利用数组的随机访问,大可不必。

    何况是Java的java.util.Stack,继承自java.util.Vecter的一个类,一个被synchronized包裹的类,不必……

    Stack<Character> stack = new Stack<>();
    for (char c : chars0) {
        stack.push(c);
    }
    StringBuilder reverse6 = new StringBuilder();
    while (!stack.isEmpty()) {
        reverse6.append(stack.pop());
    }
    System.out.println(reverse6);
    

    Strategy_7:两侧向中间交换

    这个思想就是swap(),经典的交换算法。

    char[] chars7 = chars0;
    for (int i = 0; i < length/2; i++) {
        char temp = chars7[i];
        chars7[i] = chars7[length-i-1];
        chars7[length-i-1] = temp;
    }
    System.out.println(new String(chars7));
    

    Strategy_7の位运算优化

    先写swap():

    private static void swap(char a, char b) {
        if (a != b) {
            a ^= b;
            b ^= a;
            a ^= b;
        }
    }
    

    再写具体的交换:(毕竟引用传递嘛,隐去了指针,不需使用&)

    char[] chars8 = chars0;
    for (int i = 0; i < length/2; i++) {
        swap(chars8[i], chars8[length-i-1]);
    }
    System.out.println(new String(chars8));
    

    完整Java代码

    import java.util.Stack;
    
    public class StringReverseTest {
    
        private static void swap(char a, char b) {
            if (a != b) {
                a ^= b;
                b ^= a;
                a ^= b;
            }
        }
    
        public static void main(String[] args) {
            String string = "ADFGJINJOOKC";
            int length = string.length();
            char[] chars0 = string.toCharArray();
            //方法一:倒转char[]
            char[] chars1 = new char[length];
            for (int i = 0; i < length; i++) {
                chars1[i] = chars0[length-i-1];
            }
            System.out.println(new String(chars1));
            //方法二:利用StringBuilder的reverse()
            System.out.println(new StringBuilder(string).reverse());
            //方法三:直接拼接
            StringBuilder reverse3 = new StringBuilder();
            for (int i = length-1; i >= 0; i--) {
                reverse3.append(chars0[i]);
            }
            System.out.println(reverse3);
            //方法四:直接倒着打印
            for (int i = length-1; i >= 0; i--) {
                System.out.print(chars0[i]);
            }
            System.out.println();
            //方法五:利用charAt(i)来拼接
            StringBuilder reverse5 = new StringBuilder();
            for (int i = length-1; i >= 0; i--) {
                reverse5.append(string.charAt(i));
            }
            System.out.println(reverse5);
            //方法六:使用栈来拼接
            Stack<Character> stack = new Stack<>();
            for (char c : chars0) {
                stack.push(c);
            }
            StringBuilder reverse6 = new StringBuilder();
            while (!stack.isEmpty()) {
                reverse6.append(stack.pop());
            }
            System.out.println(reverse6);
            //方法七:两侧向中间交换
            char[] chars7 = chars0;
            for (int i = 0; i < length/2; i++) {
                char temp = chars7[i];
                chars7[i] = chars7[length-i-1];
                chars7[length-i-1] = temp;
            }
            System.out.println(new String(chars7));
            //swap()
            char[] chars8 = chars0;
            for (int i = 0; i < length/2; i++) {
                swap(chars8[i], chars8[length-i-1]);
            }
            System.out.println(new String(chars8));
        }
    
    }
    

    表表态

    个人用着方法二,那个StringBuilder的reverse()比较顺手。

    展开全文
  • 这被称为转置.以下代码段执行您需要的:import java.util.*;public class ListTranspose {public static void main(String[] args) {Object[][] data = {{ "Title","Data1","Data2","Data3" },{ "A",4 },{ "B",7 },}...

    这被称为转置.以下代码段执行您需要的:

    import java.util.*;

    public class ListTranspose {

    public static void main(String[] args) {

    Object[][] data = {

    { "Title","Data1","Data2","Data3" },{ "A",4 },{ "B",7 },};

    List> table = new ArrayList>();

    for (Object[] row : data) {

    table.add(Arrays.asList(row));

    }

    System.out.println(table); // [[Title,Data3],// [A,4],// [B,7]]"

    table = transpose(table);

    System.out.println(table); // [[Title,B],// [Data1,3],// [Data2,5],// [Data3,7]]

    }

    static List> transpose(List> table) {

    List> ret = new ArrayList>();

    final int N = table.get(0).size();

    for (int i = 0; i < N; i++) {

    List col = new ArrayList();

    for (List row : table) {

    col.add(row.get(i));

    }

    ret.add(col);

    }

    return ret;

    }

    }

    也可以看看

    展开全文
  • import java.util.regex.Matcher;import java.util.regex.Pattern;public class Math {/*** @param args*/public static void main(String[] args) {String str = "a c b 1 2.2 3";//结果:a,c,b,1,,,,,,,,,,,2.2,,,...

    import java.util.regex.Matcher;

    import java.util.regex.Pattern;

    public class Math {

    /**

    * @param args

    */

    public static void main(String[] args) {

    String str = "a c b 1 2.2 3";

    //结果:a,c,b,1,,,,,,,,,,,2.2,,,,,,,,,3

    System.out.println(str.replaceAll(" ", ",").trim());//一个空格,一个逗号

    String regEx = "[' ']+";//一个或多个空格

    Pattern p = http://www.doczj.com/doc/99c7902de518964bcf847c83.htmlpile(regEx);

    Matcher m = p.matcher(str);

    //结果:a,c,b,1,2.2,3

    System.out.println(m.replaceAll(",".trim()));

    }

    展开全文
  • 2.写方法实现字符串反转 String–StringBuilder–sb.reverse–toString转化为String 3.调用方法 4.输出结果 package MyString; import java.util.Scanner; /* 利用StringBuilder完成字符串反转 分析:1.键盘录入...

    分析

    分析:1.键盘录入一个字符串
    2.写方法实现字符串反转
    String–StringBuilder–sb.reverse–toString转化为String
    3.调用方法
    4.输出结果

    package MyString;
    import java.util.Scanner;
    /*
        利用StringBuilder完成字符串反转
    
        分析:1.键盘录入一个字符串
             2.写方法实现字符串反转
                    String--StringBuilder--sb.reverse--toString转化为String
             3.调用方法
             4.输出结果
     */
    public class StringTest02 {
        public static void main(String[] args) {
            System.out.println("请输入一个字符串:");
            Scanner sc = new Scanner(System.in);
            String s = sc.nextLine();
            String s1 = StringReverse(s);
            System.out.println("s1反转后:"+s1);
        }
        /*
        两个明确:
        	返回值类型:String
        	参数列表:String
        */
        public static String StringReverse(String s){
            StringBuilder sb = new StringBuilder(s);
            sb.reverse();
            String s1 = sb.toString();
            return s1;
        }
    }
    
    展开全文
  • 案例:拼接字符串 需求:定义一个方法,把int中数组中的数据按照指定的格式拼接成一个字符串返回,调用该方法,并在控制台输出结果。 如:数组为int[] arr = {1,2,3};执行方法后输出结果为:{1,2,3} 分析: (1)...
  • Java中反转字符串我所知的五种方法

    千次阅读 2016-06-28 01:44:54
    五种方法已经封装到类中,话不多说,直接上代码。...import java.util.Stack; public class Reverse { String str = new String(); public Reverse(String str) { this.str = str; } //用数组实现 public S
  • Java字符串的逆置

    2021-10-14 10:33:56
    从键盘上输入一段字符串,逆置输出 比如从键盘上输入asdfgh 输出h g f d s a import java.util.Scanner; public class T33 { public static void main(String[] args) { String s=new String(); System.out....
  • System.out.println(“请输入字符串”); Scanner sc = new Scanner(System.in); String word = sc.nextLine(); char[] ch = word.toCharArray(); for (int i = ch.length - 1;i >= 0;i–) { System.out.println...
  • JNI实现字符串转置

    2020-04-14 23:05:34
    * @param param 待转置字符串。 * @return 转置后的字符串。 */ public static native String reverseStr(String param); 生成一个native C方法声明 JNIEXPORT jstring JNICALL Java_____reverseStr(JNIEnv *....
  • 字符串反转、判断回文数 什么是回文数 设n是一任意自然数。若将n的各位数字反向排列所得自然数n1与n相等,则称n为一回文数。例如,若n=1234321,则称n为一回文数;但若n=1234567,则n不是回文数。 说白了就是一个...
  • 344. Reverse String (转置字符串

    千次阅读 2016-10-28 11:26:26
    Write a function that takes a string as input and returns the string reversed. Example: Given s = "hello", return "olleh". public class Solution { public String reverseString(String s) {
  • 【课堂练习:矩阵转置】 已知一个二维数组A 表示一个矩阵,求AT。 其中,AT 表示矩阵的转置。...import java.util.Scanner; public class JuZhenZhuanZhi { public static void main(String[] args) { Scanner sc
  • // 符abcd123ABCD456 怎么转换为 ABCD321abcd654// 数字要倒序 小写转大写, 大写转小写Array.prototype.reverse = function() {var tmp;for (var i = 0, j = this.length - 1; i < j; i++, j--) {tmp = this[i]...
  • 如何反转倒置字符串?

    2021-01-20 01:42:35
    Java中,如何反转倒置字符串?下面的例子显示了如何将字符串参数反转倒置。程序使用StringBuffer(String string)方法缓冲输入String,反转缓冲区,然后使用toString()方法将缓冲区转换成String。package com.yiibai...
  • 1.通过jdk自带reverse的方法 public class InvertString { public static void main(String[] args) { String a="abcde"; StringBuilder b = new StringBuilder(a); System.out.print(b.rever
  • Write a function that takes a string as input and reverse only the vowels of a string. Example 1: Given s = "hello", return "holle". Example 2: ...Given s = "leetcode", return "leotcede". ...
  • Python实现字符串反转的常用方法分析【4种方法】本文实例讲述了Python实现字符串反转的常用方法。分享给大家供大家参考,具体如下:下面是实现python字符串反转的四种方法:1. 切片def rev(s):return s[::-1]这是...
  • java转置数组

    2021-03-10 09:26:24
    以下是加载的数组的示例: Term 1, Definition 1 Term 2, Definition 2 Term 3, Definition 3 为了访问数组中的一个字符串,我使用以下代码: dataArray.get(rowNumber)[columnNumber] 但是,我需要能够生成所有术语的...
  • Leetcode 题解 - 字符串

    2021-02-19 20:01:48
    Leetcode 题解 - 字符串 1. 字符串循环移位包含 2. 字符串循环移位 3. 字符串中单词的翻转 4. 两个字符串包含的字符是否完全相同 5. 计算一组字符集合可以组成的回文字符串的最大长度 6. 字符串同构 7. 回文子字符...
  • 复盘 反转子串的多种不熟练写法(写了双指针) ...某X星人发明了一种加密方法,该加密方法是将一个明文字符串从左到右分割成若干个长度相等的子字符串(最后一个子字符串的长度可以不同),然后将每个子字
  • 字符串 https://ww2.mathworks.cn/help/matlab/characters-and-strings.html 创建字符向量 通过将字符序列括在单引号中来创建一个字符向量。 chr = 'Hello, world' chr = 'Hello, world' 字符向量为 char 类型的...
  • char[] c ={'a','b','c'}...//注意:不能用c.toString()来转换,因为c.toString()是将c的地址转换为String,输出后会是一个地址值,而不是字符串     String str = "abc"; char[] c = str.toCharArr...
  • 在本文中,我们将向您展示几种在Java中将String类型的字符串字母倒序的几种方法。StringBuilder(str).reverse()char[]循环与值交换byte循环与值交换apache-commons-lang3如果是为了进行开发,请选择StringBuilder...
  • System.out.println("当前索引位置"+i+"在字符串数组strings中的位置:"+j+"已经替换成"+strings[j]); // System.out.println("替换成大写前:"+sb.toString()); sb.replace(i+1, i+2, strings[j]); // ...
  •  *要求:将字符串abcdefg左旋转2位得到cdefgab  * 思路:(递归思想)将字符串分为两部分X=ab Y=cdefg  * 先将X转置得X'=ba  * 再将Y转置得Y'=gfedc  * 最后将(X'Y')转置得cdefg ab  * @author ...
  • 面试编程题5:实现字符串翻转并输出

    千次阅读 2017-12-15 17:37:53
    继续来看一个字符串操作的编程面试题。题目是给定一个字符串,实现翻转并输出,例如“abcd”,翻转后效果变成“dcba”。 分析:  如果题目没有限制不能使用Java JDK自带API,那么我们第一个要想到的就是...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,073
精华内容 829
关键字:

java转置字符串

java 订阅