Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 34 additions & 0 deletions AdvancedLevel_Java/1023 Have Fun with Numbers (20 分).java
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.Arrays;
import java.util.Map;
import java.util.Scanner;
import java.util.TreeMap;

public class Main {
private static Scanner scanner = new Scanner(System.in);
private static BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));

public static void main(String[] args) throws IOException {
BigInteger bigInteger = scanner.nextBigInteger();
String string = bigInteger.toString();

BigInteger bigInteger1 = bigInteger.add(bigInteger);
String string1 = bigInteger1.toString();

char[] chars = string.toCharArray();
Arrays.sort(chars);
String s = String.valueOf(chars);

char[] chars1 = string1.toCharArray();
Arrays.sort(chars1);
String s1 = String.valueOf(chars1);

if (s.equals(s1)) System.out.println("Yes");
else System.out.println("No");
System.out.println(string1);
}
}
44 changes: 44 additions & 0 deletions AdvancedLevel_Java/1024 Palindromic Number (25 分).java
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.Scanner;

public class Main {
private static Scanner scanner = new Scanner(System.in);
private static BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));

public static void main(String[] args) throws IOException {


BigInteger a = scanner.nextBigInteger();
int b = scanner.nextInt();
trans(a,b);


}

private static void trans(BigInteger num,int loop){
for (int i = 0; i < loop; i++) {
if (isPalindromic(num)){
System.out.println(num);
System.out.println(i);
System.exit(0);
}
String s = num + "";
StringBuilder stringBuilder = new StringBuilder(s);
num = num.add(new BigInteger(stringBuilder.reverse().toString()));
}
System.out.println(num);
System.out.println(loop);
}

private static boolean isPalindromic(BigInteger m){
String s = m + "";
StringBuilder stringBuilder = new StringBuilder(s);
stringBuilder = stringBuilder.reverse();
return s.equals(stringBuilder.toString());
}

}
49 changes: 49 additions & 0 deletions AdvancedLevel_Java/1040 Longest Symmetric String (25 分).java
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {

private static BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));

public static void main(String[] args) throws IOException {

String s = bufferedReader.readLine();

int length = 0;

for (int i = 1; i < s.length() - 1; i++) {

if (s.charAt(i - 1) == s.charAt(i + 1)){

int flag = 1;
while ((i - flag) >= 0 && (i + flag) <= s.length() - 1 && s.charAt(i - flag) == s.charAt(i + flag)){
flag++;
}
int tem = flag * 2 - 1;
if (length < tem){
length = tem;
}
}
}

for (int i = 0; i < s.length() - 1; i++) {

if (s.charAt(i) == s.charAt(i + 1)){
int flag = 1;

while ((i - flag + 1) >= 0 && (i + flag) <= s.length() - 1 && s.charAt(i - flag + 1) == s.charAt(i + flag)){
flag++;
}
int tem = flag * 2 - 2;
if (length < tem){
length = tem;
}
}
}
if (length == 0)
System.out.println(1);
else
System.out.println(length);
}
}
69 changes: 69 additions & 0 deletions AdvancedLevel_Java/1041 Be Unique (20 分).java
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.math.BigInteger;
import java.util.StringTokenizer;

public class Main {

/*
* Case 4: 耗时200ms.内存20242KB;服务器好的时候能过,不好的时候就绿了
* Case 5: 将下面的两个数组开到100000即可过掉。
*/

static int[] ints = new int[100001];
static int[] ints1 = new int[100001];


public static void main(String[] args) throws IOException {
Reader.init(System.in);

int nums = Reader.nextInt();

for (int i = 0; i < nums; i++) {
int val = Reader.nextInt();
ints[i] = val;
ints1[val]++;
}

for (int i = 0; i < nums; i++) {
if(ints1[ints[i]] == 1) {
System.out.println(ints[i]);
return;
}
}
System.out.println("None");
}
}
class Reader {
static BufferedReader reader;
static StringTokenizer tokenizer;

static void init(InputStream input) {
reader = new BufferedReader(
new InputStreamReader(input) );
tokenizer = new StringTokenizer("");
}

static String next() throws IOException {
while ( ! tokenizer.hasMoreTokens() ) {
//TODO add check for eof if necessary
tokenizer = new StringTokenizer(
reader.readLine() );
}
return tokenizer.nextToken();
}

static int nextInt() throws IOException {
return Integer.parseInt( next() );
}

static double nextDouble() throws IOException {
return Double.parseDouble( next() );
}

static BigInteger nextBigInteger() throws IOException {
return new BigInteger( next() );
}
}
133 changes: 133 additions & 0 deletions AdvancedLevel_Java/1043 Is It a Binary Search Tree (25 分).java
Original file line number Diff line number Diff line change
@@ -0,0 +1,133 @@
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;

public class Main {

private static boolean flag = true;
private static StringBuilder stringBuilder = new StringBuilder();

public static void main(String[] args) throws IOException {
Reader.init(System.in);
int nums = Reader.nextInt();

List<Integer> list = new ArrayList<>();
for (int i = 0; i < nums; i++) {
list.add(Reader.nextInt());
}
TreeNode treeNode = createTree(list);
if (flag){
postf(treeNode);
System.out.println("YES");
System.out.println(stringBuilder.substring(1));
}else {
flag = true;
TreeNode treeNode1 = createMirrorTree(list);
if (flag){
postf(treeNode1);
System.out.println("YES");
System.out.println(stringBuilder.substring(1));
}else {
System.out.println("NO");
}
}
}

private static void postf(TreeNode treeNode){
if (treeNode == null){
return;
}
postf(treeNode.left);
postf(treeNode.right);
stringBuilder.append(" ").append(treeNode.val);
}

private static TreeNode createMirrorTree(List<Integer> list){

if (list.size() == 0){
return null;
}

int k = 1;

while (k < list.size() && list.get(k) >= list.get(0)){
k++;
}

List<Integer> right = list.subList(k,list.size());
for (int i:right) {
if (i >= list.get(0)){
flag = false;
return null;
}
}

TreeNode treeNode = new TreeNode();
treeNode.val = list.get(0);

treeNode.left = createMirrorTree(list.subList(1,k));
treeNode.right = createMirrorTree(list.subList(k,list.size()));

return treeNode;
}

private static TreeNode createTree(List<Integer> list){

if (list.size() == 0){
return null;
}

int k = 1;

while (k < list.size() && list.get(k) < list.get(0)){
k++;
}

List<Integer> right = list.subList(k,list.size());
for (int i:right) {
if (i < list.get(0)){
flag = false;
return null;
}
}

TreeNode treeNode = new TreeNode();
treeNode.val = list.get(0);

treeNode.left = createTree(list.subList(1,k));
treeNode.right = createTree(list.subList(k,list.size()));

return treeNode;
}
}

class TreeNode{
int val;
TreeNode left;
TreeNode right;
}

class Reader{

static BufferedReader reader;
static StringTokenizer tokenizer;

static void init(InputStream inputStream){
reader = new BufferedReader(new InputStreamReader(inputStream));
tokenizer = new StringTokenizer("");
}

static String next() throws IOException{
while (! tokenizer.hasMoreTokens()){
tokenizer = new StringTokenizer(reader.readLine());
}
return tokenizer.nextToken();
}
static int nextInt() throws IOException {
return Integer.parseInt( next() );
}
}
40 changes: 40 additions & 0 deletions AdvancedLevel_Java/1050 String Subtraction (20 分).java
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.math.BigInteger;
import java.util.StringTokenizer;

public class Main {

static BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
static boolean[] booleans = new boolean[200];
public static void main(String[] args) throws IOException {
// Reader.init(System.in);

String s1 = bufferedReader.readLine();
String s2 = bufferedReader.readLine();

for (int i = 0; i < s1.length(); i++) {

if (!booleans[s1.charAt(i)])

booleans[s1.charAt(i)] = true;

}

for (int i = 0; i < s2.length(); i++) {
if (booleans[s2.charAt(i)]){
booleans[s2.charAt(i)] = false;
}
}

StringBuilder stringBuilder = new StringBuilder();
for (int i = 0; i < s1.length(); i++) {
char c = s1.charAt(i);
if (booleans[c])
stringBuilder.append(c);
}
System.out.println(stringBuilder);
}
}
Loading