2017-01-17 2 views
0

Ich muss einen Java-Code schreiben, um VBA7425IWC zu ABV2457CIW zu verdecken. Ich brauche Hilfe dabei. Wenn ich die Strings sortiere, sortieren sie nach ASCII-Werten und die Zahlen werden zu einem Chunk und die Alphabete zu einem anderen.Alphanumerische Subtrings Sortierung

Antwort

0

Ihre Frage ist in ihren Anforderungen ein wenig vage. Versuchen Sie, jeden einzelnen Teilstring von Zeichen und Zahlen zu sortieren?

In diesem Fall müssen Sie die Bereiche der einzelnen Teilstrings bestimmen, die durch eine Verschiebung von Zeichen zu Zahlen gekennzeichnet sind.

Sie können anhand des ASCII-Werts feststellen, ob ein Zeichen ein Buchstabe oder eine Zahl ist.

0

Hier ist eine Beispiellösung, die ich durch Unterteilung von Zeichenkettenintro numerischer und alphabetischer Teilstrings, die in Liste gespeichert sind, erreiche und dann sortiere und mit java 8 stream API reduziere.

String s = "VBA7425IWC"; 
    List<String> mylist = new ArrayList<>(); 
    StringBuilder subString = new StringBuilder(); 
    for (int k = 0; k < s.length() - 1; k++) { 
     subString.append(s.charAt(k)); 
     if ((Character.isDigit(s.charAt(k + 1)) 
       && Character.isAlphabetic(s.charAt(k))) || 
       (Character.isDigit(s.charAt(k)) 
         && Character.isAlphabetic(s.charAt(k + 1)))) { 
      mylist.add(subString.toString()); 
      subString.setLength(0); 
     } 
    } 
    mylist.add(subString.append(s.charAt(s.length() - 1)).toString()); 
    System.out.println(mylist); 
    String finalResult = mylist 
      .stream() 
      .map((myString) -> { 
       char[] charArr = myString.toCharArray(); 
       Arrays.sort(charArr); 
       return new String(charArr); 

      }) 
      .reduce("", (s1, s2) -> s1 + s2); 
1

Dieser verwendet Regex. Möglicherweise müssen Sie das Muster so anpassen, dass es Kleinbuchstaben enthält:

import java.util.Arrays; 
import java.util.regex.Matcher; 
import java.util.regex.Pattern; 

public class SplitRegex { 

    public static void main(String[] args) { 
     // The search string 
     String str = "VBA7425IWC"; 

     // The Regular expression (Finds {word} tokens) 
     Pattern pt = Pattern.compile("[A-Z]+|[0-9]+"); 

     // Match the string with the pattern 
     Matcher m = pt.matcher(str); 

     String result = ""; 
     // If results are found 
     while (m.find()) { 
      char[] chArray = m.group(0).toCharArray(); 
      Arrays.sort(chArray); 
      result += new String(chArray); 
     } 
     System.out.println(result); 
    } 

} 
Verwandte Themen