Loading...
BoniMislyashki avatar BoniMislyashki 36 Точки

[Homework] Java Basics - Масиви, списъци, стрингове, речници, множества - Май 2014

Ето примерни решения на първите 10 задачи от темата: "Масиви, списъци, стрингове, речници, множества":

1. Sort Array of Numbers

2. Sequences of Equal Strings

3. Largest Sequence of Equal Strings

4. Longest Increasing Sequence

5. Count All Words

6. Count Specified Word

7. Count Substring Occurrences

8. Extract Emails

9. Combine Lists of Letters

10. Extract All Unique Words

11. Most Frequent Word

12. Cards Frequencies

13. ** Web Crawler

 

Полезни линкове за 8ма задача: тук и тук. Особено мързелив начин за решение: тук.

Тагове:
17
Java Advanced 05/09/2014 00:51:22
Dominik avatar Dominik 82 Точки

Здравей колега , 

Благодаря за решенията аз тук се мачех от 1-2 часа с 2ра задача , но доста странно ( поне за мен :D ) ми гърми , след като добавих 1 ред от твоя код и смених цикъла да върти от int i = 1 вместо от int i = 0 е пушка , но може ли някои да ми обясни за да не допускам тази грешка в бъдеще :) Защо гърми този код :

public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String words = scan.nextLine();
String[] arr = words.split(" ");
System.out.println();

for (int i = 0 ; i < arr.length; i++) {
if (arr[i].equals(arr[i - 1])) {
System.out.printf(" %s", arr[i]);
}else {
System.out.println();
System.out.print(arr[i]);
}

0
BoniMislyashki avatar BoniMislyashki 36 Точки

if (arr[i].equals(arr[i - 1])) {  - При i = 0, arr[i - 1] става -1 и гърми, не може да имаш отрицателна стойност.

1
lostm1nd avatar lostm1nd 121 Точки

Здрасти. Интересно ми е защо на 1ва задача си сложила затварянето на ресурса 'System.in'  в цикъл. Всъщност, Наков нали каза да не го затваряме ; )>?

А на 2ра задача, когато имаш непоследователна поредица няма да работи тази логика. Примерно - а б а б б а а б.

1
Swillen avatar Swillen 2 Точки

Идеята за 3та задача ми е същата, но не знам дали входа винаги е последователен затова първо сортирам масива.  

0
LittleNinja avatar LittleNinja 71 Точки

Ако добавям нужните символи от втория към първия и после го принтирам, на последния тест, след като добавя първото 'а' не ми добавя следващите 'а'-та, защото при проверката казва, че има 'а' в първия списък.

С два листа може да се направи, както го е направил колегата ZvetanIG отдолу, но вече така съм го направил.. laughing

0
ZvetanIG avatar ZvetanIG 907 Точки

Здрасти, колеги нещо не мога да схана идеята на  9 задача.  И примерите в задачата не ми помагат.  Накой съгласен ли е да обясни какво точно се иска. Благодаря ви предварително!

2
BoniMislyashki avatar BoniMislyashki 36 Точки

Здравей, на 9та задача имаш 2 листа като към първия лист трябва да добавиш само тези букви от втория, които ги няма в първия лист. Например h e l l o и l o w: l и о вече ги има в първия лист, така че добавяш само w; a b a и b a b a: и a, и b от втория лист ги има в първия, така че тук не добавяш нищо.

0
ZvetanIG avatar ZvetanIG 907 Точки

Благодаря за пояснението. Ето го и решението http://pastebin.com/RywBS9DA

Цялата работа стана само с два реда:

list2.removeAll(list1);
        
list1.addAll(list2);

8
GoShow avatar GoShow 595 Точки

Браво Цецо! Много хитро решение! Много ми хареса!!!

2
kaizer avatar kaizer 35 Точки

Здравейте колеги,

така грешно ли е да запълвам масив от int например. Наоравих си го преди да съм слуалпоследната лекция от курса и работи. Моля, да обърнете внимание как задавам дължината на масива.

import java.util.Arrays;
import java.util.Scanner;

public class SortArrayOfNumbers {
    public static int[] fillArray(int[] arr, int n) {
        Scanner in = new Scanner(System.in);
        for (int i = 0; i < arr.length; i++) {
            arr[i] = in.nextInt();
        }
        return arr;
    }
    
    public static void printArray(int[] arr) {
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }
    }
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        int[] arr = new int[n];
        fillArray(arr, n);
    }
}

 

0
Samuil.Petrow avatar Samuil.Petrow 1550 Точки

Наред си е, точно така си се пълни :D иначе този return arr; не се ползва в случая, можеш да го махнеш и да си направиш метода void.

1
DNNdrago avatar DNNdrago 145 Точки

Здравейте, много готини задачки, доста неща се упражняват докато се решат, поздравления, за което!

 

Споделям и моите решения до тук:

 

1. Sort Array of Numbers

2. Sequences of Equal Strings

3. Largest Sequence of Equal Strings

4. Longest Increasing Sequence

5. Count All Words

6. Count Specified Word

7. Count Substring Occurrences

8. Extract Emails 

9. Combine Lists of Letters

10. Extract All Unique Words

11. Most Frequent Word

12. Cards Frequencies

 

5
Ivaylo.Il avatar Ivaylo.Il 226 Точки

На последната проверка на 5та задача ми дава 59, а не 60. Видях колеги са използвали "\\W+" патерн. Може ли ми обясните какво прави този патерн, тъйкато не можах да го разбера нещо oт презентацията. Благодаря предварително !

http://pastebin.com/2YJGb8hU

0
DNNdrago avatar DNNdrago 145 Точки

Разделя на всички не-думи

 

Regular ExpressionDescription
\d Any digit, short for [0-9]
\D A non-digit, short for [^0-9]
\s A whitespace character, short for [ \t\n\x0b\r\f]
\S A non-whitespace character, short for [^\s]
\w A word character, short for [a-zA-Z_0-9]
\W A non-word character [^\w]
\S+ Several non-whitespace characters
\b Matches a word boundary where a word character is [a-zA-Z0-9_].
4
Tatyana avatar Tatyana 99 Точки

Колега, ето тук надълго и нашироко се коментират регулярните изрази (regex) в Java. 
http://docs.oracle.com/javase/tutorial/essential/regex/ 

А иначе \w означава "A word character, short for [a-zA-Z_0-9]", а когато е с главна буква : 

\W означава "A non-word character or [^\w]". Регулярните изрази са много интересни, поне основните е хубаво да се знаят.

 

3
TodorovH avatar TodorovH 216 Точки

Има две думи свързани с черта, може би оттам ти идва разликата!

0
arsoman avatar arsoman 419 Точки

Колеги, имам нужда от помощ! Ето така реших 4-та задача, но имам проблем с HashMap-a, по-точно проблем, че ги размества стойностите вътре! Поради това ми дава друг резултат, макар че на някои от тестовете, резултата е точен! Въпроса ми е как и дали може да се избегне това разместване, защото в други "цивилизовани" езици го няма, или трябва да се примиря и да търся друг вариант? Благодаря!

0
lostm1nd avatar lostm1nd 121 Точки

Всъщност хеш мапа си работи правилно. Той не ти сортира ключовете, нито пък ги изкарва в реда, в който си ги вкарал. Това се получава, тъй като хеш кода се генерира по някакъв алгоритъм и на база на този резултат се подреждат ключовете в хеш мапа. Обикновено, когато правиш собствен клас и имплементираш хеш кода, той представлява поредица от математически операции върху стойностите на полетата, които пазиш в този клас - много често се изполва XOR оператора.

Ако искаш да изкарваш стойности в реда, в който си ги вкарал използвай масив или лист. Ако искаш сортиране на стойностите използвай TreeMap.

Можеш да си направиш подобие на хеш мап, като ползваш два масива. В един записваш ключа, а в другия стойността. Търсиш дали елемента съществува в масива с ключове и слагаш на същия индекс в другия масив неговата стойност.

0
arsoman avatar arsoman 419 Точки

Истинското решение, но без тези мапове....Бих искал да ги ползвам, щото са готини, ама явно не и в този случай....

0
arsoman avatar arsoman 419 Точки

Да, последната идея с двата масива е добра, не се бях сетил! Аз не мисля, че маповете работят грешно, просто ме е яд на начина им на работа, иначе щяха да са много добри за ползване...Благодаря!

0
VenIT avatar VenIT 63 Точки

Здравейте ,
ето и моите решения на повечето задачи, скоро още.

01_SortArrayOfNumbers

02_SequencesOfEqualStrings

03_LargestSequenceOfEqualStrings

04_LongestIncreasingSequence

05_CountAllWords

06_CountSpecifiedWord

07_CountSubstringOccurrences

09_CombineListsOfLetters

10_ExtractAllUniqueWords

11_MostFrequentWord

12_CardsFrequencies

Мисля,че output-a на първият тест на 10 задача е сбъркан !
java to softuni welcome ,  а  трябва да е : java softuni to welcome

4
magdalena70 avatar magdalena70 96 Точки
Да,напълно съм съгласна за 10 зад.И при мен единствено на този отговор има разминаване. Аз също получавам : java softuni to welcome......Мислех,че нещо бъркам...
1
psykepro avatar psykepro 18 Точки

Да сгрешен е output-а, защото "s"  е преди "t".

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