1. 程式人生 > >Java面試題--基本字串壓縮

Java面試題--基本字串壓縮

題目描述

利用字元重複出現的次數,編寫一個方法,實現基本的字串壓縮功能。比如,字串“aabcccccaaa”經壓縮會變成“a2b1c5a3”。若壓縮後的字串沒有變短,則返回原先的字串。

給定一個string iniString為待壓縮的串(長度小於等於10000),保證串內字元均由大小寫英文字母組成,返回一個string,為所求的壓縮後或未變化的串。

測試樣例

"aabcccccaaa"
返回:"a2b1c5a3"
"welcometonowcoderrrrr"
返回:"welcometonowcoderrrrr"
import java.util.*;

public class Zipper {
    public String zipString(String iniString) {
        // write code here
    	int len = iniString.length();
    	final int maxn = 10010;
    	int counts[] = new int[maxn];
    	char charlog[] = new char[maxn];
    	int index = 0;
    	counts[index]++;
    	charlog[index] = iniString.charAt(0);
    	for(int i=1;i<len;i++) {
    		if(iniString.charAt(i)==iniString.charAt(i-1)) {
    			counts[index]++;
    		}else {
    			counts[++index]++;
    			charlog[index] = iniString.charAt(i);
    		}
    	}
    	String ansStr = "";
    	for(int i=0;i<=index;i++) {
    		ansStr = ansStr + charlog[i];
    		ansStr = ansStr + counts[i];
    	}
    	int Len = ansStr.length();
    	if(Len<=len) return ansStr;
    	return iniString;
    }
}

相關推薦

Java試題--基本字串壓縮

題目描述 利用字元重複出現的次數,編寫一個方法,實現基本的字串壓縮功能。比如,字串“aabcccccaaa”經壓縮會變成“a2b1c5a3”。若壓縮後的字串沒有變短,則返回原先的字串。 給定一個string iniString為待壓縮的串(長度小於等於10000),保證串

java試題之資料基本型別各佔幾個位元組

型別 位數 位元組數 short 2 16 char 2 16 int 4 32 float 4 32

Java演算法試題(008) 字串反轉

簡介 這是一個Java面試中被經常問及的問題,也有很多種實現方式。我在這裡一一列出,如果你有更好的解法,也可留言。 解法一:首尾字元調換順序 由於String物件是隻讀型別,不能對其進行直接操作,因此需要轉換成字元陣列,然後調換字元陣列中的各個字元。 public St

Java試題演算法篇尋找字串中最長的重複元素子串

package com.puhui.goosecard.web.utils; // Java program to find the maximum consecutive // repeating character in given string class GFG

Java---練習(試題) :字串擷取(2-最終版)

在java中,字串“abcd”與字串“ab你好”的長度是一樣,都是四個字元。 但對應的位元組數不同,一個漢字佔兩個位元組。 定義一個方法,按照指定的位元組數來取子串。 如:對於“ab你好”,如果取三個位元組,那麼子串就是ab與“你”字的半個,那麼半個

字串--java試題, 首個重複字串,二分查詢

對於一個字串,請設計一個高效演算法,找到第一次重複出現的字元。 給定一個字串(不一定全為字母)A及它的長度n。請返回第一個重複出現的字元。保證字串中有重複字元,字串的長度小於等於500。 測試樣例: "qywyer23tdd",11 返回:y public class FirstRepeat {

劍指offer--試題28:字串的排列--Java實現

題目描述: 輸入一個字串,打印出該字串中字元的所有排列。例如輸入字串abc,則打印出由字元a、b、c所能排列出來的所有字串abc、acb、bac、bca、cab和cba。 解題思路: 我們求整個字串的排列,可以看成兩步,首先求可能出現在第一個位置上的字元,

基本字串壓縮Java

利用字元重複出現的次數,編寫一個方法,實現基本的字串壓縮功能。比如,字串“aabcccccaaa”經壓縮會變成“a2b1c5a3”。若壓縮後的字串沒有變短,則返回原先的字串。 給定一個string iniString為待壓縮的串(長度小於等於3000),保證串內字元均由大小寫英文字母組成,返回一個str

一道關於擷取字串java試題

下午看面試題時,看到一道關於擷取字串的。題目是這樣的: 程式設計:編寫一個擷取字串的函式,輸入為一個字串和位元組數,輸出為按位元組擷取的字串。 但是要保證漢字不被截半個,如“我ABC”4,應該截為“我AB”,輸入“我ABC漢DEF”,6,應該輸出為“我ABC”而不是“我ABC

基本字串壓縮Java實現

利用字元重複出現的次數,編寫一個方法,實現基本的字串壓縮功能。比如,字串“aabcccccaaa”經壓縮會變成“a2b1c5a3”。若壓縮後的字串沒有變短,則返回原先的字串。 給定一個str

Java試題和解答(三)

增加 自旋 println class 答案 logs 聯網 get link 1、這段代碼大多數情況下運行正常,但是某些情況下會出問題。什麽時候會出現什麽問題?如何修正? public class MyStack { private List<S

java試題

調用 strong 同步鎖 記錄 沒有 拋出異常 數據 sleep wait sleep()和wait()的區別  sleep是線程類的方法,它會讓出cpu去執行其他線程,當指定時間過後,會從新回到此線程上,但是雖然讓出了CPU ,並不會釋放對象鎖,   wait是obje

java試題

情況 減少 元素 pro pin 內存大小 java_opts req -xms 個人的一點參考總結,如有雷同,純屬巧合! 1、hashmap的實現原理以及hashtable的線程安全是怎麽實現的?HashMap其實也是一個線性的數組實現的,所以可以理解為其存儲數據的容

java試題-java基礎

runtime 都是 缺點 子類 true 大數 virtual 過程 面向連接 1.1java與其他語言相比,有什麽優點和缺點?   首先,java與c、c++相比,java是一種完全的面對對象的語言,雖然他的底層(運行時庫)使用c語言開發的,可是並不依賴於c,因為jav

Java(試題):字符串截取

int lan out 試題 void trace 題目 replace odi 在Java中,字符串“abcd”與字符串“ab你好”的長度是一樣,都是四個字符。 但對應的字節數不同,一個漢字占兩個字節。 定義一個方法,按照指定的字節數來取子串。 如:對於“ab你好”,如果

Java試題和解答(四)

aio sys main sina 數據 由於 ssd shm 檢測 1、JVM什麽情況下會GC,GC策略有哪些 當應用程序分配新的對象,GC的代的預算大小已經達到閾值,比如GC的第0代已滿;代碼主動顯式調用System.GC.Collect();其他特殊情況,比如,系統

100+經典Java試題及答案解析

是什麽 自定義 我們 計數 接口類 同步方法 main err ans 面向對象編程(OOP) Java是一個支持並發、基於類和面向對象的計算機編程語言。下面列出了面向對象軟件開發的優點: 代碼開發模塊化,更易維護和修改。 代碼復用。 增強代碼的可靠性和靈活

java試題2

pan ole light [0 -i att turn mat [] 1.冒泡排序 public static void test(){ int[] array = new int[]{1,4,5,8,9,34,4,32,65}; int tmp; for(

10個經典的Java試題集合

支持 獲得 equal 效率 可用 ash 很快 鍵值對 shm 1.Java的HashMap是如何工作的? HashMap是一個針對數據結構的鍵值,每個鍵都會有相應的值,關鍵是識別這樣的值。 HashMap 基於 hashing 原理,我們通過 put ()和 g

Java試題-線程安全

通過 釋放 運行時 ica work 面試題 條件 同時 strong 1. 什麽叫線程安全?servlet是線程安全嗎? 答:如果你的代碼所在的進程中有多個線程在同時運行,而這些線程可能會同時運行這段代碼。如果每次運行結果和單線程運行的結果是一樣的,而且其