- Фильтрация
- Коллекции
- Инверсия
- Простое число
- Массив
- Дубликаты
- Обработка строк
- Палиндром
- Swap-операции
- StringBuffer
1. Напишите код, который профильтрует дублирующиеся элементы в массиве и выведет их в виде списка.
package simple.test; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; public class findDuplicates { public static void main(String[] args) { ArrayList<String> list = new ArrayList<String>(); // Формируем список чисел от 0 до 9. for (int i = 0; i < 10; i++) { list.add(String.valueOf(i)); } // Вставляем новый набор чисел от 0 до 5. for (int i = 0; i < 5; i++) { list.add(String.valueOf(i)); } System.out.println("Изначальный список : " + list); System.out.println("\\nОтфильтрованный список без дубликатов : " + processList(list)); } public static Set<String> processList(List<String> listContainingDuplicates) { final Set<String> resultSet = new HashSet<String>(); final Set<String> tempSet = new HashSet<String>(); for (String yourInt : listContainingDuplicates) { if (!tempSet.add(yourInt)) { resultSet.add(yourInt); } } return resultSet; } }
2. Дайте пример кода, который сортирует список строк с использованием коллекции.
package simple.test; import java.util.Arrays; public class sortStrings { public static void main(String[] args) throws Exception { String[] inputList = { "Янв", "Феб", "Мар", "Апр", "Май", "Июн", "Июл", "Авг", "Сен", "Окт", "Ноя", "Дек" }; // Показать имеющийся несортированный список. System.out.println("-------Входной список-------"); showList(inputList); // Вызов сортировки этого списка. Arrays.sort(inputList); // Показать отсортированный список. System.out.println("\n-------Сортированный список-------"); showList(inputList); // Вызов сортировки списка с учетом регистра. System.out.println("\n-------Сортированный список с учетом регистра-------"); Arrays.sort(inputList, String.CASE_INSENSITIVE_ORDER); // Выводим отсортированный список. showList(inputList); } public static void showList(String[] array) { for (String str : array) { System.out.print(str + " "); } System.out.println(); } }
3. Напишите функцию, которая переворачивает число (порядок цифр в нем изменяет на противоположный, инвертирует).
package simple.test; public class invertNumber { public long doInvert(long number) { long invert = 0; while (number != 0) { invert = (invert * 10) + (number % 10); number = number / 10; } return invert; } public static void main(String args[]) { long lnum = 654321; invertNumber input = new invertNumber(); System.out.println("Введенное значение : " + lnum); System.out.println("Инвертированное значение : " + input.doInvert(lnum)); } }
4. Напишите метод проверки, является ли введенное число простым числом
package simple.test; import java.util.Scanner; public class findPrime { public static void main(String[] args) { Scanner scan = new Scanner(System.in); System.out.print("Введите целое число : "); int input = scan.nextInt(); if (checkPrime(input)) { System.out.println("Введенное число " + input + " является простым."); } else { System.out.println("Введенное число " + input + " не является простым."); } } public static boolean checkPrime(int n) { if (n <= 1) { return false; } for (int i = 2; i < Math.sqrt(n); i++) { if (n % i == 0) { return false; } } return true; } }
5. Напишите метод поиска двух самых больших значений в массиве.
package simple.test; public class findTwoMaxValue { public void GetTwoMaxValues(int[] nums) { int maxOne = 0; int maxTwo = 0; for (int n : nums) { if (maxOne < n) { maxTwo = maxOne; maxOne = n; } else if (maxTwo < n) { maxTwo = n; } } System.out.println("Max1 - " + maxOne); System.out.println("Max2 - " + maxTwo); } public static void main(String[] args) { int list[] = { 15, 24, 48, 21, 43, 11, 79, 93 }; findTwoMaxValue max = new findTwoMaxValue(); max.GetTwoMaxValues(list); } }
6. Напишите код поиска самой длинной подстроки из введенной строки, в которой нет дублирующихся символов.
package simple.test; import java.util.HashSet; import java.util.Set; public class findSubstr { private Set<String> stringSet = new HashSet<String>(); private int lstringSet = 0; public Set<String> findStr(String input) { // Сброс данных в экземпляре. stringSet.clear(); lstringSet = 0; // Присвоить boolean-флаг ASCII-значению каждого символа. boolean[] flag = new boolean[256]; int j = 0; char[] inputCharArr = input.toCharArray(); for (int i = 0; i < inputCharArr.length; i++) { char c = inputCharArr[i]; if (flag[c]) { extractSubString(inputCharArr, j, i); for (int k = j; k < i; k++) { if (inputCharArr[k] == c) { j = k + 1; break; } flag[inputCharArr[k]] = false; } } else { flag[c] = true; } } extractSubString(inputCharArr, j, inputCharArr.length); return stringSet; } private String extractSubString(char[] inputArr, int start, int end) { StringBuilder sb = new StringBuilder(); for (int i = start; i < end; i++) { sb.append(inputArr[i]); } String subStr = sb.toString(); if (subStr.length() > lstringSet) { lstringSet = subStr.length(); stringSet.clear(); stringSet.add(subStr); } else if (subStr.length() == lstringSet) { stringSet.add(subStr); } return sb.toString(); } public static void main(String a[]) { findSubstr substr = new findSubstr(); System.out .println("Введенные строки ------------ | ---- Самые длинные неповторяющиеся"); System.out.println("Software_Programmer" + " | " + substr.findStr("Software_Programmer")); System.out.println("Software_Developer_In_Test" + " | " + substr.findStr("Software_Developer_In_Test")); System.out.println("developers_write_unit_tests" + " | " + substr.findStr("developers_write_unit_tests")); System.out.println("javajavbasp.net" + " | " + substr.findStr("javajavbasp.net")); } }
7. Напишите код, который удаляет из строки лишние пробелы.
package simple.test; import java.util.StringTokenizer; public class removeExtraSpaces { public static void main(String args[]){ String input = "Удали из меня лишние пробелы."; StringTokenizer substr = new StringTokenizer(input, " "); StringBuffer sb = new StringBuffer(); while(substr.hasMoreElements()){ sb.append(substr.nextElement()).append(" "); } System.out.println("Введенная строка: " + input); System.out.println("Исправленная строка: " + sb.toString().trim()); } }
8. Напишите код, проверяющий, является ли введенное число палиндромом (то есть, читается ли с конца на начало — так же как с начала на конец, как слово «Анна» или фраза «Лёша на полке клопа нашёл»).
package simple.test; import java.io.BufferedReader; import java.io.InputStreamReader; public class identifyPalindrome { public static void main(String[] args) { try { BufferedReader object = new BufferedReader(new InputStreamReader( System.in)); System.out.println("Введите число"); int inputValue = Integer.parseInt(object.readLine()); int n = inputValue; int rev = 0; System.out.println("Введенное число - это : "); System.out.println(" " + inputValue); for (int i = 0; i <= inputValue; i++) { int r = inputValue % 10; inputValue = inputValue / 10; rev = rev * 10 + r; i = 0; } System.out.println("После перевертывания : " + " "); System.out.println(" " + rev); if (n == rev) { System.out.print("Введенное число является палиндромом."); } else { System.out.println("Введенное число не является палиндромом."); } } catch (Exception e) { System.out.println("Недопустимое число."); } } }
9. Напишите код, который меняет местами два числа, при этом нельзя создавать «временную» переменную.
package simple.test; public class smartSwapping { public static void main(String args[]) { int numX = 10; int numY = 20; System.out.println("Состояние до перемены местами:"); System.out.println("Значение numX: " + numX); System.out.println("Значение numY: " + numY); System.out.println(""); numX = numX + numY; numY = numX - numY; numX = numX - numY; System.out.println("Состояние после перемены местами:"); System.out.println("Значение numX: " + numX); System.out.println("Значение numY: " + numY); } }
10. Напишите код, который переворачивает строку, в двух вариантах: с применением класса BufferString
, и без.
package simple.test; public class invertString { public String invertWithStringBuffer(String str) { StringBuffer buffer = new StringBuffer(str); buffer.reverse(); return buffer.toString(); } public String invertWithoutStringBuffer(String str) { int length = str.length(); String original = str; String invert = ""; for (int i = length - 1; i >= 0; i--) { invert = invert + original.charAt(i); } return invert; } public static void main(String[] args) { invertString invertStr = new invertString(); System.out.println("Инвертированная строка с BufferString: " + invertStr.invertWithStringBuffer("987654321")); System.out.println(""); System.out.println("Инвертированная строка без BufferString: " + invertStr.invertWithoutStringBuffer("kjihgfedcba")); } }
***