Advertisement
jovanovski

НЛ Лаб6 Зад1

Dec 2nd, 2012
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.70 KB | None | 0 0
  1. import java.util.*;
  2.  
  3. class MacString{
  4.     LinkedList<Character> string;
  5.    
  6.     public MacString(){
  7.         string = new LinkedList<Character>();
  8.     }
  9.    
  10.     public MacString(String s){
  11.         string = new LinkedList<Character>();
  12.         for(char a : s.toCharArray()) string.add(a);
  13.     }
  14.    
  15.     public MacString(LinkedList<Character> string){
  16.         this.string = string;
  17.     }
  18.    
  19.     public void append(char c){
  20.         string.add(c);
  21.     }
  22.    
  23.     public void insert(char c){
  24.         string.addFirst(c);
  25.     }
  26.    
  27.     public int length(){
  28.         return string.size();
  29.     }
  30.    
  31.     public boolean isPalindrome(){
  32.         for(int i=0, j=string.size()-1;i<j;i++,j--){
  33.             if(!string.get(i).equals(string.get(j))) return false;
  34.         }
  35.         return true;
  36.     }
  37.    
  38.     public MacString changeAplhabet(Map<Character, Character> mapa){
  39.             MacString str = new MacString(string);
  40.             Iterator it = mapa.entrySet().iterator();
  41.             while(it.hasNext()){
  42.                 Map.Entry pairs = (Map.Entry)it.next();
  43.                 if(str.string.contains(pairs.getKey()))
  44.                 for(int i=0;i<str.string.size();i++){
  45.                     if(str.string.get(i).equals(pairs.getKey()))
  46.                         str.string.set(i, (Character) pairs.getValue());
  47.                 }
  48.             }
  49.             return str;
  50.     }
  51.    
  52.     public MacString format(int length, boolean right){
  53.         MacString str = new MacString();
  54.         if(length<string.size()) return new MacString(string);
  55.         else{
  56.             if(right){
  57.                 for(int i=0;i<(length-string.size()); i++) str.append(' ');
  58.                 for(int i=0;i<string.size();i++) str.append(string.get(i));
  59.             }
  60.             else{
  61.                 for(int i=0;i<string.size();i++) str.append(string.get(i));
  62.                 for(int i=0;i<(length-string.size()); i++) str.append(' ');
  63.             }
  64.         }
  65.         return str;
  66.     }
  67.    
  68.     public boolean isRecuring(MacString base){
  69.         String s = "";
  70.         for(int i=0;i<string.size();i++) s+=string.get(i);
  71.         if(s.contains(base.toString())){
  72.             int pocetok = s.indexOf(base.toString());
  73.             s = s.substring(0, pocetok) + s.substring(pocetok + base.length(), s.length());
  74.             if(s.contains(base.toString())) return true;
  75.         }
  76.         return false;
  77.     }
  78.    
  79.     public String toString(){
  80.         String s = "";
  81.         for(int i=0;i<string.size();i++) s+=string.get(i);
  82.         return s;
  83.     }
  84. }
  85.  
  86. public class MacStringTest {
  87.    
  88.     public static void main(String[] args) {
  89.         Scanner jin = new Scanner(System.in);
  90.         MacString mc = new MacString(jin.next());
  91.         int k = jin.nextInt();
  92.         if ( k == 0 ) {//test eve but changeAplhabet
  93.             while ( true ) {
  94.                 String cmd = jin.next();
  95.                 if ( cmd.equals("stop") ) break;
  96.                 System.out.print(cmd+" ");
  97.                 if ( cmd.equals("isPalindrome") ) {
  98.                     System.out.println();
  99.                     System.out.println(mc.isPalindrome());
  100.                     System.out.println(mc);
  101.                 }
  102.                 if ( cmd.equals("isRecuring") ) {
  103.                     String base = jin.next();
  104.                     System.out.println(base);
  105.                     System.out.println(mc.isRecuring(new MacString(base)));
  106.                     System.out.println(mc);
  107.                 }
  108.                 if ( cmd.equals("insert") ) {
  109.                     char c = jin.next().charAt(0);
  110.                     System.out.println(c);
  111.                     mc.insert(c);
  112.                 }
  113.                 if ( cmd.equals("append") ) {
  114.                     char c = jin.next().charAt(0);
  115.                     System.out.println(c);
  116.                     mc.append(c);
  117.                 }
  118.                 if ( cmd.equals("format") ) {
  119.                     int n = jin.nextInt();
  120.                     boolean asc = jin.nextBoolean();
  121.                     System.out.println(n+" "+asc);
  122.                     System.out.println(mc.format(n,asc));
  123.                     System.out.println(mc);
  124.                 }
  125.                 if ( cmd.equals("print") ) {
  126.                     System.out.println();
  127.                     System.out.println(mc);
  128.                 }
  129.             }  
  130.         }
  131.         if ( k == 1 ) {//test changeAlphabet
  132.             int num_rules = jin.nextInt();
  133.             TreeMap<Character,Character> rules = new TreeMap<Character,Character>();
  134.             for ( int i = 0 ; i < num_rules ; ++i ) {
  135.                 String rule = jin.next();
  136.                 rules.put(rule.charAt(0), rule.charAt(2));
  137.             }
  138.             System.out.println(mc.changeAplhabet(rules));
  139.             System.out.println(mc);
  140.         }
  141.     }
  142.  
  143. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement