Problem:
りんごと桃

福島県は果物の産地としても有名で、その中でも特に桃とりんごは全国でも指折りの生産量を誇っています。ところで、ある販売用の英文パンフレットの印刷原稿を作ったところ、手違いでりんごに関する記述と桃に関する記述を逆に書いてしまいました。

あなたは、apple と peach を修正する仕事を任されましたが、なにぶん面倒です。１行の英文を入力して、そのなかの apple という文字列を全て peach に、peach という文字列を全てapple に交換した英文を出力するプログラムを作成してください。

Input

英文（半角英数字、空白、記号を含む）が１行に与えられます。入力される文字列の長さは 1000 以下です。

Output

apple とpeach という文字列を交換した英文を１行に出力します。

Sample Input

the cost of one peach is higher than that of one apple.

Output for the Sample Input

the cost of one apple is higher than that of one peach.

Solution in JAVA (judge verdict: Accepted)

import java.util.*;

public class Main{
	public static void main(String[] args){
		Scanner stdIn = new Scanner(System.in);
		
		String str = stdIn.nextLine();
		String[] s = str.split(" ");
		StringBuilder result = new StringBuilder();
		for(int i = 0; i < s.length; i++){
			if( s[i].equals("apple") ){
				s[i] = "peach";
			} else if( s[i].equals("peach") ){
				s[i] = "apple";
			} else if( s[i].length() > 5 ){
				int start = 0;
				int indexA;
				int indexP;
				while( (indexA = s[i].indexOf("apple", start)) >= 0 || (indexP = s[i].indexOf("peach", start)) >= 0 ){
					indexP = s[i].indexOf("peach", start);
					int key = indexA;
					if( key < 0 ){
						key = indexP;
					} else if( indexP >= 0 && key > indexP ){
						key = indexP;
					}
				//	System.out.println(key);
					StringBuilder temp = new StringBuilder(s[i]);
					if( s[i].charAt(key) == 'a' ){
						temp.replace(key, key+5, "peach");
					} else {
						temp.replace(key, key+5, "apple");
					}
					s[i] = temp.toString();
					start = key+5;
				}
			}
			result.append(s[i] + " ");
		}
		result.deleteCharAt(result.length()-1);
		System.out.println(result);
	}
}