1. 程式人生 > >java筆試題:用java實現字串壓縮演算法

java筆試題:用java實現字串壓縮演算法

題目:將字串 aaabcdda (可以從控制檯接收)程式設計實現將其轉換為 3a1b1c2d1a。

我的大致就這樣:

System.out.print("請輸入一串字串:");
Scanner s = new Scanner(System.in);
String str = s.nextLine();
StringBuffer result = new StringBuffer();
// 字串長度
int count = str.length();
// 取第一個字元
char word1 = str.charAt(0);
// 連續字元的個數
int sum = 1;
for (int i = 1; i < count; i++) {
	// 迴圈取字元
	char word2 = str.charAt(i);
	// 把前一個字元和當前字元比較
	if (word1 == word2) {
		// 相同的字元 個數加1
		sum++;
		continue;
	}
	// 拼接字元
	result.append(sum).append(word1);
	// 當前字元變為前一個字元
	word1 = word2;
	// 個數清零
	sum = 1;
}
// 加上最後一個字元及個數,並列印輸出
System.out.println("字串壓縮後:" + result.append(sum).append(word1));

效果如下:


再輸入帶空格的字串:


假如從控制檯接收輸入的字串時,我們呼叫的是next方法,

Scanner s = new Scanner(System.in);
String str = s.next();
這時效果會變成:


這裡提下next和nextLine的區別:

next():  當方法遇見第一個字元為有效字元(非空格、換行字元)時,開始掃描,當遇見第一個分割符或結束符(空格或換行符)時結束掃描。

反之第一個字元非有效字元,next()方法會自動將其之後的字元去掉。

簡單地說,next()方法返回的是來自此掃描器的下一個完整標記,完整標記的前後是與分隔模式匹配的輸入資訊,所以next方法不能得到帶空格的字串。

nextLine():方法的結束符是Enter鍵,即nextLine()方法返回的是Enter鍵之前的所有字元,它是可以得到帶空格的字串的。

相關推薦

java試題java實現字串壓縮演算法

題目:將字串 aaabcdda (可以從控制檯接收)程式設計實現將其轉換為 3a1b1c2d1a。 我的大致就這樣: System.out.print("請輸入一串字串:"); Scanner s = new Scanner(System.in); String str

java試題找出3~999的水仙花數的三種實現方式

style col 展示 ava num get 實現 sys pack 第一種方式: package test; public class Exsercise { public static void main(String[] args) {

Java試題給定一個ReadOnlyClass的對象roc,能否把這個對象的age值改成30?

acc 資料 謝謝 ble 技術 set exce turn 宋體 在Java筆試面試中,經常會遇到代碼題,今天我們就來看一則Java代碼筆試題。 有如下代碼: Class ReadOnlyClass { private Intege

java試題隨機生成一個4位數字的年號,判斷是否是閏年?

技術 ring ima color 一個 sta string == pub 老規矩,直接上代碼: /** * 隨機生成一個4位數的年號,判斷概念是否為閏年並輸出相應的信息。 */ public static void LeapYear

java試題判斷一個3~100之間的所有的素數?

java筆試題 int 打印 () als 註意 分享圖片 技術 sqrt 註意兩點:① 什麽是素數?② 如何利用計算機的方法去解決問題? public static void NumberDemo(){ int x = 0; System

JAVA試題程式碼的輸出結果順序

class HelloA{ public HelloA()     {         System.out.println("I’m A class ");

java試題關於short s1=1;s1=s1+1;short s1=1;s1+=1;short s3=s1+s2;中存在的簡單資料型別轉換問題的理解

面試題的內容大概是這樣:short s1=1;s1=s1+1;這兩句程式碼有什麼問題?short s1=1;s1+=1;這兩句程式碼有什麼問題?short s1=1,s2=1;short s3=s1+s2;這兩句程式碼有什麼問題? 下面我就對這三個問題按照自己的理解以及參考做出解釋: 解釋之

Java試題之《Java代碼查錯》

gin 參數 eth string oid java筆試題 protected -s 構造 Java代碼查錯 1.abstract class Name { private String name; public abstract boolean isStupidN

No.23 經典試題巨集來計算偏移量,判斷大小端(聯合體法,指標法)

寫一個巨集,計算結構體中某變數相對於首地址的偏移,並給出說明 判斷大小端 程式碼1: //寫一個巨集,計算結構體中某變數相對於首地址的偏移,並給出說明 //定義的這個巨集將結構體裡邊的變數的地址取出後再強轉成char型,然後進行相減。 //注意:&s

資料結構經典面試題多種方法實現字串迴圈移位

來源:我是碼農,轉載請保留出處和連結! 本文連結:http://www.54manong.com/?id=12 問題描述:     要求在時間複雜度和空間複雜度分別為O(n)和O(1)的條件下把一個長度為N的字串迴圈左移M位,例如將長度為9的字串"12345

華為面試題請編寫一個字串壓縮程式,將字串中連續出席的重複字母進行壓縮,並輸出壓縮後的字串

#include<iostream> #include<stdio.h> #include<cstring> using namespace std; //void stringZip(const char *pInputStr, long lInputLen, char

java實現2018年9月9日晚上的京東試題現給出n個物品的a,b,c引數,請你求出不合格品的數量。

題目: 現有n個物品,每個物品有三個引數,ai,bi,ci,定義i物品不合格的依據是:若存在物品j,且aj>ai,bj>bi,cj>ci,則稱i物品為不合格品。 現給出n個物品的a,b,c引數,請你求出不合格品的數量。 輸入: 第一行包含一個整數n(1<=n&

java實現2018年9月7日下午的科大訊飛試題平安夜殺手

下邊是自己理解的解答,如果有問題歡迎指出。 java實現:2018年9月7日下午的科大訊飛筆試題:平安夜殺手 題目:(這裡是按照原題打字的) 有n個殺手排成一行,每一個殺手都有不同的編號(編號為1~n),在每個夜晚殺手都會行動,如果殺手編號大於他右邊的殺手的編號,他就會殺死他右邊的殺手,

劍指Offer面試題7(Java版)兩個棧實現佇列與兩個佇列實現

題目:用兩個棧實現一個佇列。佇列的宣告如下,請實現它的兩個函式appendTail和deletedHead,分別完成在佇列尾部插入節點和在佇列頭部刪除節點的功能。 我們通過一個具體的例子來分析該佇列插入和刪除元素的過程。首先插入一個元素a,不妨先把它插入到stack1,此時

年終總結java試題49道 收藏版(含答案)

1、在Java EE中,Servlet是在伺服器端執行,以處理客戶端請求而做出的響應的程式,下列選項中屬於Servlet生命週期階段的是( ) A、載入和例項化 B、初始化 C、服務 D、銷燬 E、以上全部 答案:E 2、在Java EE中的MVC設計模式中,(

面試總結Java搞定二叉樹方面的面試題

package org.hunan.guan.javaIO; import java.util.ArrayList; import java.util.Iterator; import java.util.LinkedList; import java.util.List

Java試題有陣列a[n],java程式碼將陣列元素順序顛倒

Official Certification 鄧 斌,Tony,男,漢族,江西興國人,無黨派,研究生學歷。畢業於中國科學技術大學精密機械資訊工程專業,於2008年取得中國科學技術大學高階軟體工程專業工學碩士學位。先後在國內外知名網際網路企業做過資深軟體開發工程師、高階系

java試題java中的單例設計模式及兩種實現方法的程式碼舉例

java面試時經常會問到關於單例設計模式,因為它能考察的知識點較多且在開發中經常用到。那我就來說一說我對於單例設計模式的一些淺見。首先,在Java中,什麼是單例呢?就是保證類在記憶體中只有一個物件。那麼

Java資料結構之——棧陣列實現

/** * This is an abstract data type interface for the stack. * This interface includes methods: * {@code pop},{@code push},{@code peek},{@code isEm

Java試題--比較兩字串

1、題目 給定兩個分別由字母組成的字串str1和字串str2,字串str2的長度比字串str1短,請問,如何最快地判斷字串str2中所有字母是否都在字串str1裡?例如,字串str1為“ABCD”,str2為“AC”,則返回true,因為字串str2中的字母A和B都在字串s