fork(2) download
  1. /* package whatever; // don't place package name! */
  2.  
  3. import java.util.*;
  4. import java.lang.*;
  5. import java.io.*;
  6.  
  7. /**
  8. есть сжатая строка вида "h3jv2sf" например, нужно её распаковать в строку вида "hhhjvvsf", или же например строка "fe2rt2w", её нужно распаковать в строку вида "feerttt", то есть число может быть любым больше 1, оно показывает число вхождений предыдущего символа;
  9. подскажите как это сделать, тут нужно использовать регулярные выражения? хотя бы алгоритм подскажите
  10. **/
  11. /* Name of the class has to be "Main" only if the class is public. */
  12. class Ideone
  13. {
  14. public static void main (String[] args) throws java.lang.Exception
  15. {
  16.  
  17. String example = " t15v5";
  18. String[] splitByRegex = example.split("");
  19.  
  20. for(int b = 0;b<splitByRegex.length;b++){
  21. try{
  22. int a = Integer.parseInt(splitByRegex[b]);
  23. try{
  24. splitByRegex[b] += ""+Integer.parseInt(splitByRegex[b+1]);
  25. splitByRegex[b+1] = "";
  26. a = Integer.parseInt(splitByRegex[b]);
  27.  
  28. }catch(Exception e){say(e.getMessage());}
  29.  
  30.  
  31. splitByRegex[b] ="";
  32. for(int i=0;i<a-1;i++){
  33. splitByRegex[b] += splitByRegex[b-1];
  34. }
  35. }catch(Exception e){continue;}
  36. }
  37.  
  38. example ="";
  39. for(int b = 0;b<splitByRegex.length;b++){
  40. example += splitByRegex[b];
  41. }
  42. say(example);
  43. }
  44.  
  45. static <T> void say(T smth){System.out.println(smth);}
  46. }
Success #stdin #stdout 0.1s 320576KB
stdin
Standard input is empty
stdout
6
 tttttttttttttttvvvvv