• 【java】字符串排序增加去重(附源码)


    字符串排序增加去重

    Java实现对字符串进行升序或是降序排列,在指定位置添加元素,对字符串去重。

    使用函数:

    String.toCharArray():char[]  将字符串转化为字符数组;

    String.charAt(int ):char   对字符串进行下标元素读取;

    StringBuffer.append(String|char ): StringBuffer  将元素添加到StringBuffer中;

    StringBuffer.charAt(int ): char  对StringBuffer内字符串进行下标元素读取;

    StringBuffer.toString():String  将StringBuffer.转换为String类型。

    完整源码如下:

     1 import java.util.*;
     2 
     3 public class pra1 {
     4     public static void main(String[] args) {
     5         Scanner scan = new Scanner(System.in);
     6         System.out.println("start");
     7         String str = scan.nextLine();
     8         System.out.println("第二个参数大于0即为升序排列:" + string.sort(str, 1));
     9         char a[] = { 'c', 'b', 'd' };
    10         String str1 = string.insert(str, 3, new String(a));
    11         System.out.println("在位置3处插入a[]内元素:" + str1);
    12         System.out.println("去重:" + string.remove(str1));
    13     }
    14 }
    15 
    16 class string {
    17     public static String sort(String string, int a) {// 排序,可升降都可以
    18         char str[] = string.toCharArray();
    19         int n = str.length;
    20         if (a > 0) {
    21             for (int i = 0; i < n; i++) {
    22                 for (int j = 0; j < n - 1 - i; j++) {
    23                     if (compare(str[j], str[j + 1]) > 0) {
    24                         char temp = str[j];
    25                         str[j] = str[j + 1];
    26                         str[j + 1] = temp;
    27                     }
    28                 }
    29             }
    30         } else {
    31             for (int i = 0; i < n; i++) {
    32                 for (int j = 0; j < n - 1 - i; j++) {
    33                     if (compare(str[j], str[j + 1]) < 0) {
    34                         char temp = str[j];
    35                         str[j] = str[j + 1];
    36                         str[j + 1] = temp;
    37                     }
    38                 }
    39             }
    40         }
    41         return new String(str);
    42     }
    43 
    44     public static int compare(char a, char b) {
    45         if (a > b)
    46             return 1;
    47         else if (a < b)
    48             return -1;
    49         else
    50             return 0;
    51     }
    52 
    53     public static String insert(String str, int a, String insert) {// 在指定位置插入字符串
    54         StringBuffer stringB = new StringBuffer();
    55         int n = str.length();
    56 
    57         if (n < a)
    58             return str + insert;
    59         for (int i = 0; i < a; i++) {
    60             stringB.append(str.charAt(i));
    61         }
    62         stringB.append(insert);
    63         for (int j = a; j < n; j++) {
    64             stringB.append(str.charAt(j));
    65         }
    66         return stringB.toString();
    67     }
    68 
    69     public static String remove(String str) {// 去重
    70         StringBuffer stringB = new StringBuffer();
    71         int n = str.length();
    72         if (n <= 1)
    73             return str;
    74         stringB.append(str.charAt(0));
    75 
    76         for (int i = 1; i < n; i++) {
    77             int tag = 1;
    78             for (int j = 0; j < stringB.length(); j++) {
    79                 if (stringB.charAt(j) == str.charAt(i)) {
    80                     tag = -1;
    81                     break;
    82                 }
    83             }
    84             if (tag == 1)
    85                 stringB.append(str.charAt(i));
    86         }
    87         return stringB.toString();
    88     }
    89 }

    补一个比较高效的去重方法:

    public static String remove(String str) {
         char[] c = str.toCharArray(); char[] s = new char[128]; for (int i = 0; i < c.length; i++) { s[c[i]] = c[i]; } String strQ = ""; for (int i = 0; i < s.length; i++) { if((int)s[i] != 0){ strQ += s[i]; } } return strQ; }
  • 相关阅读:
    POJ 1236 Network of Schools(强连通分量缩点求根节点和叶子节点的个数)
    文本编辑器vim和gedit
    Ubuntu安装tensorflow
    剑指offer——python【第29题】最小的K个数
    剑指offer——python【第30题】连续子数组的最大和
    剑指offer——python【第37题】数字在排序数组中出现的次数
    剑指offer——python【第28题】数组 中出现次数超过一半的数字
    剑指offer——python【第31题】整数1出现的次数
    剑指offer——python【第54题】字符流中第一个不重复的字符
    剑指offer——python【第40题】数组中只出现一次的数字
  • 原文地址:https://www.cnblogs.com/carsonwuu/p/7517978.html
Copyright © 2020-2023  润新知