2014-09-03 66 views
0

我想颠倒每一对奇数字符串,并将它们与偶数对一起添加。反转每个奇数字符串并将它们加在一起

例如字符串123456789会变成213465789然后加在一起会给21 + 34 + 65 + 78 + 9 =哪个207.

我当前的代码是

public static void main(String[] args) { 
    String Num = "123456789"; 
    System.out.println(reverse(Num) + "."); 
} 

public static int reverse(String a) { 
    String newa = ""; 
    String revString = ""; 
    char ch; 
    for (int i = 0; i < a.length(); i=i+4) { 
     newa = (a.substring(i, i + 2)); 
     ch = newa.charAt(i); 
     revString = ch + revString; 
     } 
    } 

我做有一个大致的想法是反转每一对字符串并将它们放回到一个新的字符串中,该字符串将是“213465789”。那么字符串分成对,并把它们加起来和任何其他操作如/,*和%,但我似乎无法写我的代码提前

感谢

+2

Voldermont主吗?是你吗? – Maroun 2014-09-03 10:07:33

+0

@MarounMaroun:嘘......他的名字没被采用! :\ – NoobEditor 2014-09-03 10:08:05

+0

您面临的问题是什么? – 2014-09-03 10:09:07

回答

0

简单的算法中会是这样的

  • String Num = "123456789";

  • 循环的for(int i = 0到N-3;​​ I = I + 2) - 扭转串

  • 交换ii+1 - 使用[char]-'0'逻辑,弦乐从char类型强制转换为int“ - 这给备用转串

  • 再次for(int i= 0 to n-3;i=i+2) - 添加的总和

  • sum = sum + ((chatAt(i)-'0')*10+(charAt(i+1)-'0')) 21“,逻辑将会有(2 * 10 + 1)

+0

Bettoer使用'Integer.parse'将字符串转换为int – talex 2014-09-03 10:18:33

+0

@talex:约定...但我更老派类型..plus此方法没有做任何性能方面的伤害恕我直言! :) – NoobEditor 2014-09-03 10:19:44

1

试试这个 -

int pairCout=0; 
int sum =0; 
for (int i = 0; i < a.length();i+=2) { 
     String newa = a.substring(i, (i + 2)<a.length()?(i+2):a.length()); 
     pairCout++; 
     if(pairCout%2 ==0){  // EVEN/ODD separation 
      String reverse = new StringBuilder(newa).reverse().toString(); 
      sum+=Integer.parseInt(reverse); // SUMMATION 
     }else{ 
      sum+=Integer.parseInt(newa); // SUMMATION 
     } 
} 

只是一个方法 - 输出 - 207

相关问题