打印1-100之间的素数
class Solution{
public static void main(String[] args) {
for (int i = 0; i < 100; i++) {
boolean b = new Test102().checkPrime(i);
if (b) System.out.print(i + " ");
}
}
private boolean checkPrime(int x) {
boolean isPrime = true;
if (x == 1 || x % 2 == 0 && x != 2) {
isPrime = false;
} else {
for (int i = 3; i < x; i++) {
if (x % i == 0) {
isPrime = false;
break;
}
}
}
return isPrime;
}
}
链表删除倒数第n个索引的元素
class Node {
int data;
Node next;
public Node() {
}
public Node(int data) {
this.data = data;
}
}
class Link implements CommonLink,linkUtils {
Node head, tail;
int size;
public Link() {
head = new Node();
tail = head;
size = 0;
}
@Override
public void add(int e) {
Node node = new Node(e);
tail.next = node;
tail = node;
size++;
}
@Override
public void insert(int e, int index) {
Node node1 = getNodePrePosition(index);
Node node = getNodePosition(index);
Node node2 = new Node(e);
if (index == 0) {
head.next = null;
head.next = node2;
} else {
node1.next = null;
node1.next = node2;
}
node2.next = node;
size++;
}
private Node getNodePosition(int index) {
checkindex(index);
Node node = head.next;
for (int i = 0; i < index; i++) {
node = node.next;
}
return node;
}
private Node getNodePrePosition(int index) {
checkindex(index);
Node node1 = head.next;
for (int i = 0; i < index - 1; i++) {
node1 = node1.next;
}
return node1;
}
@Override
public void delete(int index) {
Node node1 = getNodePrePosition(index);
Node node = getNodePosition(index);
if (index != 0) {
if (index == size - 1) {
node1.next = null;
} else {
node1.next = null;
node1.next = node.next;
}
node.next = null;
node.data = 0;
} else {
head.next = null;
head.next = node.next;
node.next = null;
node.data = 0;
}
size--;
}
@Override
public int get(int index) {
Node node = head.next;
for (int i = 0; i < index; i++) {
node = node.next;
}
return node.data;
}
@Override
public void modify(int e, int index) {
Node node = head.next;
for (int i = 0; i < index; i++) {
node = node.next;
}
Node node1 = new Node(e);
node.data = e;
}
@Override
public int getSize() {
return size;
}
public void checkindex(int index) {
if (index < 0 || index > size) {
throw new IndexOutOfBoundsException("invalid param");
}
}
@Override
public void printLink(Link link) {
for (int i = 0; i < link.getSize(); i++) {
int e = link.get(i);
System.out.println("No " + i + " data: " + e);
}
}
@Override
public void deleteCountDownIndex(Link link,int index) {
int newIndex = link.getSize() - index;
link.delete(newIndex);
}
@Override
public Node reverseLink() {
Node prev = null;
Node curr = head;
while (curr != null) {
Node nextTemp = curr.next;
curr.next = prev;
prev = curr;
curr = nextTemp;
}
return prev;
}
}
interface CommonLink {
public void add(int e);
public void insert(int e, int index);
public void delete(int index);
public int get(int index);
public void modify(int e, int index);
public int getSize();
public void printLink(Link link);
}
interface linkUtils {
public void deleteCountDownIndex(Link link,int index);
public Node reverseLink();
}
class Test {
public static void main(String[] args) {
Link link = new Link();
link.add(12);
link.add(34);
link.add(56);
link.add(78);
link.add(90);
link.deleteCountDownIndex(link,4);
link.printLink(link);
}
}
外观数组
class Solution1 {
public String countAndSay(int n) {
if(n == 1) return "1";
String num = countAndSay(n - 1);
StringBuilder s = new StringBuilder();
for(int i=0; i<num.length(); i++) {
int count = 1;
while(i < num.length()-1 && num.charAt(i) == num.charAt(i+1)) {
count++;
i++;
}
s.append(count);
s.append(num.charAt(i));
}
return s.toString();
}
}
class Test2 {
public static void main(String[] args) {
String s = new Solution1().countAndSay(4);
System.out.println(s);
}
}