携程笔试两道AC,最后一道有思路没时间了
第一道是单链表按某值划分,要求不能改变数组内的相对顺序
import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;
public class Main {
public static class ListNode {
int val;
ListNode next;
ListNode(int x) {
val = x;
next = null;
}
}
/*请完成下面这个函数,实现题目要求的功能
******************************开始写代码******************************/
static ListNode partition(ListNode head,int m) {
ListNode prel=null;
ListNode prer=null;
ListNode rigl=null;
ListNode rigr=null;
ListNode next;
while (head!=null){
next=head.next;
if(head.val<=m){
if(prel==null){
prel=head;
prer=head;
}else {
prer.next=head;
prer=head;
}
}else {
if(rigl==null){
rigl=head;
rigr=head;
}else {
rigr.next=head;
rigr=head;
}
}
head=next;
}
if(prer!=null)
prer.next=rigl;
return prel==null?rigl:prel;
}
/******************************结束写代码******************************/
public static void main(String[] args){
Scanner in = new Scanner(System.in);
ListNode head=null;
ListNode node=null;
int m=in.nextInt();
while(in.hasNextInt()){
int v=in.nextInt();
if(head==null){
node=new ListNode(v);
head=node;
}else{
node.next=new ListNode(v);
node=node.next;
}
}
head= partition(head,m);
if(head!=null){
System.out.print(head.val);
head=head.next;
while(head!=null){
System.out.print(",");
System.out.print(head.val);
head=head.next;
}
}
System.out.println();
}
}
第二道是翻转最外层括号的字符串,里面有括号不翻转,最后输出没有括号的结果((ur)oi)-》iour
import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;
public class Main2 {
/*请完成下面这个函数,实现题目要求的功能
当然,你也可以不按照下面这个模板来作答,完全按照自己的想法来 ^-^
******************************开始写代码******************************/
static String resolve(String expr) {
int count=0;
int left=0;
int right=0;
String str ="";
char[] arr=expr.toCharArray();
for(int i=0;i<arr.length;i++){
if(arr[i]=='('){
if(++count==2){
left=i+1;
}
}
if(arr[i]==')'){
if(--count==1){
right=i-1;
swap(arr,left,right);
}
}
if(count<0){
return "";
}
if(i==arr.length-1&&count>0){
return "";
}
}
swap(arr,0,arr.length-1);
for(int i=0;i<arr.length;i++){
if(arr[i]!='('&&arr[i]!=')'){
str+=arr[i];
}
}
return str;
}
static void swap(char[] arr,int l,int r){
char temp;
while (l<r){
temp=arr[r];
arr[r]=arr[l];
arr[l]=temp;
l++;
r--;
}
}
/******************************结束写代码******************************/
public static void main(String[] args){
Scanner in = new Scanner(System.in);
String res;
String _expr;
try {
_expr = in.nextLine();
} catch (Exception e) {
_expr = null;
}
res = resolve(_expr);
System.out.println(res);
}
}
#携程##笔试题目#

