Simple Pig Latin

kata programming

مساله:

حرف اول هر کلمه را به انتهای آن منتقل کنید ، سپس “ay” را به انتهای کلمه اضافه کنید. علائم نگارشی را دست نخورده بگذارید.

مثال ها:

pigIt('Pig latin is cool'); // igPay atinlay siay oolcay
pigIt('Hello world !');     // elloHay orldway !

Description:

Move the first letter of each word to the end of it, then add “ay” to the end of the word. Leave punctuation marks untouched.

Examples

pigIt('Pig latin is cool'); // igPay atinlay siay oolcay
pigIt('Hello world !');     // elloHay orldway !

راه حل ها:

public class PigLatin {
    public static String pigIt(String str) {
        return str.replaceAll("(\\w)(\\w*)", "$2$1ay");
    }
}
import java.util.Arrays;
import java.util.stream.Collectors;
import java.util.regex.Pattern;

public class PigLatin {
    public static String pigIt(String str) {
        return Arrays.stream(str.trim().split(" "))
                .map(v -> v.matches("[a-zA-Z]+") ? v.substring(1).concat(v.substring(0, 1)).concat("ay") : v)
                .collect(Collectors.joining(" "));
    }
}
import java.util.Arrays;
import java.util.stream.Collectors;

public class PigLatin {
    public static String pigIt(String str) {
        return Arrays.stream(str.split(" ")).map(PigLatin::pigify).collect(Collectors.joining(" "));
    }

    private static String pigify(String word){
        return word.length() > 1 || Character.isLetter(word.charAt(0)) ? word.substring(1) + word.charAt(0) + "ay" : word;
               
    }
}
import static java.lang.Character.*;

public class PigLatin {
    public static String pigIt(String str) {
        StringBuilder result = new StringBuilder();
        
        for (String s : str.split(" ")) {
            char firstLetter = s.charAt(0);

            result.append(s, 1, s.length())
                  .append(firstLetter)
                  .append(isAlphabetic(firstLetter) ? "ay" : "")
                  .append(" ");
        }
        
        return result.substring(0, result.length()-1);
    }
}

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد.