Loading...
office_kanev avatar office_kanev 6 Точки

[Homework] Text Processing and Regex API март 2016

Домашното цък .Някой да даде решение на втора задача.Давайте примери за по-оптимизирани решения .Приемам критики относно решенията ми .Дайте някой по оптимизиран регекс за '6-та задача' че аз я решавам с три оделни и стана доста тъпо решение.

0
Java Advanced 01/04/2016 13:48:02
ionkoto avatar ionkoto 23 Точки

Колеги написах някакво прекалено елементарно решение на 7ма задача, но всички примери ми излизат. Ако някой намери грешка ще съм ви благодарен. Ето кода: 

import java.util.Scanner;

public class MagicExchangableWords {
    public static void main(String[] args) {
        Scanner console = new Scanner(System.in);
        String s1 = console.next();
        String s2 = console.next();
        System.out.println(areExchangeable(s1,s2));

    }

    private static boolean areExchangeable(String s1, String s2){
        for (int i = 0; i < s1.length() ; i++) {
            for (int j = i+1; j <s1.length() ; j++) {
                if ((s1.charAt(i)==s1.charAt(j)) && (s2.charAt(i)!=s2.charAt(j))){
                    return false;
                }
            }
        }
        return true;

    }
}

 

1
EyubDjelil avatar EyubDjelil 9 Точки

office_kanev ето един regex, който хваща всички.

Само, че се наложи допълнителна проверка за да извеждам само онези match.find(), които са цяла дума а не част от по-голяма дума.

package Homeworks.TextProcessing_RegexAPI;

import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * Created by Eyub on 6.4.2016 г..
 * Problem 6
 * Write a program that takes as input an array of strings are prints
 * only the words that start and end with capital letter.
 * Words are only strings that consist of English alphabet letters.
 * Use regex.
 */
public class StartsAndEndsWithCapitalLetter {
    public static void main(String[] args) {
        List<String[]> list = new ArrayList<>();

        String[] lineOne = {"GoshO", " blabla", "NqmaSm1saL", "KvoStaA"};
        String[] lineTwo = {"AZ", "AK", "47", "RoBoT", "noWayouT"};
        String[] lineTree = {"DrakonI", " Navsekyde"};

        list.add(lineOne);
        list.add(lineTwo);
        list.add(lineTree);

        Pattern p = Pattern.compile("([A-Z][a-zA-Z]*[A-Z])");
        for (int i = 0; i < list.size(); i++) {
            for (String s : list.get(i)) {
                Matcher matcher = p.matcher(s);

                while (matcher.find()) {
                    if (s.equals(matcher.group())) {
                        System.out.print(" "+matcher.group());
                    }
                }
            }
            System.out.println();
        }
    }
}

Надявам се да е полезна информация.

0
07/04/2016 13:07:18
kaloyannikov avatar kaloyannikov 531 Точки

Няма смисъл да имаш два цикъла по тоя начин според мен

//

for (int i = 0; i < list.size(); i++) {
     for (String s : list.get(i)) {

//

според мен e по-добре с foreach да обхождаш колекция .

for(String string : list)

0
EyubDjelil avatar EyubDjelil 9 Точки

Всъщност не си се загледал в кода внимателно kaloyannikov.

В списъка имам String[] -т.е. масиви. И във втория for обхождам индексите на масива във списъка.

0
07/04/2016 13:45:59
Ivanov.Ivan avatar Ivanov.Ivan Trainer 558 Точки

Прилагам моето решение на StartsAndEndsWithCapitalLetter

Ползвам Regex който мачва всякакви букви, латиница, кирилица, китайски и т.н.

Успех

0
valiobar avatar valiobar 29 Точки

Задача 6  я направих с \b[A-Z]([a-zA-z]+)?[A-Z]\b

Мисля че работи коректно.

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.